我处于我正在处理的网站的情况下,经理希望允许用户登录,如果他们通过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记住。感谢。
答案 0 :(得分:2)
我认为你的web.config中有错误的域名。你应该把它改成
domain=".site.com"
因此,您允许您的表单身份验证Cookie在ssl.site.com和no-ssl.site.com域中同时存在。
所有这一切都说明了任何类型的安全性都以https://开头所有解决方案 - 否则你会对中间人攻击开放(网络代理会向你的解决方案注入不适当的内容,他们会可以窃取您的授权Cookie并在https://ssl.site.com等流程中使用它。