如何准备我的ASP.NET / MVC网站使用SSL?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (48)

我准备SSL cert在我的主机上安装一个。

这是我的理解(并纠正我,如果我错了......):

  1. 一旦主持人安装证书,我将能够浏览我的网站HttpHttps(没有什么会阻止我继续使用Http)?
  2. 我需要做的唯一事情就是添加逻辑(在MVC,Controller属性/过滤器的情况下)来强制某些我选择的页面重定向到Https(例如,[RequiresHttps]谨慎添加属性)。

我是否必须担心为了确保使用SSL正确而做了额外的事情?我不确定是否需要用逻辑来改变某些事情:

  1. cookies
  2. PayPal Express集成

此外,我计划[RequiresHttps]仅在购物车,结帐,登录,帐户和管理页面上添加。我想离开我的产品浏览/购物页面,Http因为我听说有更多的使用开销Https。这是正常的/可以接受的吗?

还有一个问题......我知道ASP.NET以Auth cookie的形式存储一些登录信息。用户在Https页面内登录是可以的,但可以返回并浏览Http页面?我想知道这是否会造成安全漏洞,因为用户已登录并Http再次浏览。这是否毁了使用点SSL

我有点新鲜...这样的帮助将不胜感激。

提问于
用户回答回答于

从你的问题开始,(1)是的,没有什么会阻止你使用相同的页面http ether https

和(2)是的,你需要添加你的逻辑关于什么页面只显示为https和http。如果有人想知道,为什么不把所有显示为https,原因就在于速度,当您将它们作为https发送时,页面更大并且编码/解码需要更多一点,所以如果不需要https,只需将其切换到http。

在HTTP和HTTPS之间自动切换是一个非常好的代码,用于实现快速简单的切换逻辑。

cookie

当cookie必须处理用户的凭证时,需要强制它仅通过安全页面进行传输。这意味着,如果使用https设置cookie,则此cookie不会在非安全页面上传输,因此保持安全并且中间的人无法窃取它。这里的提示是,这个cookie不能在http页面上读取 - 所以你可以知道用户是A或B只在安全页面上。

购物车 - 产品

是的,这是正常现象:将产品和购物车放在不安全的连接上,因为信息并不那么特别。当您使用真实的用户数据时,例如姓名,电子邮件地址等,您可以启动https页面。

验证Cookie

如果将其设置为仅安全,则此Cookie不会在不安全的页面上显示/读取/存在。如果不确保安全,这是一个问题。

Response.Cookies[s].Secure = true;

几句话

我们用安全和不安全的页面做的事情是,我们实际上将用户数据分为两部分。一个是安全的,另一个不是。所以我们实际上使用两个cookie,一个安全,一个不安全。

不安全的cookie例如是连接购物车上所有产品的那个cookie,或者可能是用户的历史记录(什么产品可以看到)这也是我们并不关心是否有人得到它,因为即使代理可以看到从URL的用户历史,或用户看到的。

安全cookie是认证,为用户保留一些关键信息。因此,非安全cookie与用户网页上的任何地方的用户相关,安全性仅在签出时,登录时等。

有关

MSDN,如何:保护ASP.NET 2.0中的表单身份验证

用户回答回答于

1)是的,你是对的。

2)是的。通过自动将客户端重定向到页面的HTTPS版本,可以更优雅地处理HTTP 403.4代码(需要SSL)。

至于身份验证Cookie,我已经找到了此MSDN文章。基本上,可以将网站(和客户端的浏览器)设置为仅通过HTTPS传输身份验证Cookie。这样它就不会受到对未加密信道的网络监听。

当然,这只有在所有[Authorize]操作都仅限于HTTPS的情况下才有可能。

扫码关注云+社区