跨安全和非安全共享身份验证

时间:2016-07-13 16:52:58

标签: asp.net webforms

我处于我正在处理的网站的情况下,经理希望允许用户登录,如果他们通过http或https登录则不用担心。基于另一个SO问题(how can I share an asp.net session between http and https)我认为如果我在cookie上设置secure = false,这将是可能的。为此,我们使用子域作为站点的安全部分。因此,对于http,我们使用site.com,而https使用secure.site.com。所以我尝试在web.config中设置域以进行身份​​验证。

<authentication mode="Forms">   
  <forms loginUrl="/account/login"
    protection="All" timeout="30" name=".ASPXAUTH" path="/"
    requireSSL="false" slidingExpiration="true" defaultUrl="/"
    cookieless="UseDeviceProfile" domain="site.com"
    enableCrossAppRedirects="false" /> 
</authentication>

我这样做是错的吗?我知道存在一些安全问题,我会在提出请求时解决这些问题。我只想让用户登录一次,并通过http和https记住。感谢。

1 个答案:

答案 0 :(得分:2)

我认为你的web.config中有错误的域名。你应该把它改成

domain=".site.com"

因此,您允许您的表单身份验证Cookie在ssl.site.com和no-ssl.site.com域中同时存在。

所有这一切都说明了任何类型的安全性都以https://开头所有解决方案 - 否则你会对中间人攻击开放(网络代理会向你的解决方案注入不适当的内容,他们会可以窃取您的授权Cookie并在https://ssl.site.com等流程中使用它。