我使用的是VSTS 2008 + C#+。Net 3.5 + IIS 7.0 + ASP.Net。在我对Forms身份验证的理解中,会话变量(用于身份验证标识符 - 即用户通过身份验证时,用户将拥有此类会话变量,并且会话变量被实现为cookie)是为经过身份验证的用户建立的。 / p>
我对此模式的关注是,每次用户访问网站中的页面时,会话变量都将传输到服务器端。它可能被黑客窃取,黑客可以使用这样的会话变量假装成最终用户?这是安全隐患吗?
如果存在安全风险,那么我们必须始终使用https进行Forms身份验证吗?
提前谢谢, 乔治答案 0 :(得分:3)
用户的会话ID 不用作身份验证Cookie的一部分 - 身份验证Cookie,会话Cookie是独立的。因此,如果您网站的某些部分需要身份验证,那么会话ID就不足以进入。
话虽如此,如果黑客嗅探流量,那么他们也会看到身份验证cookie,因此可以重新创建两者。
答案 1 :(得分:2)
您可以参考此question获取更多信息。这是一种潜在的安全风险,为了提供真正安全的连接,您必须使用HTTPS。
答案 2 :(得分:2)
是的,可以通过嗅探流量来窃取会话ID,因此使用会话进行识别存在安全风险。它通常被认为对非关键站点足够安全,但如果你有一个安全性至关重要的站点(banking,et.c),你需要使用SSL足够安全。
答案 3 :(得分:2)
我对我们的合作伙伴的请求有类似的担忧...... (详见此处:https://stackoverflow.com/questions/1367574/rewriting-urls-using-reverse-proxy)
事实证明,这个“合法”的过程实际上是使用一种称为“中间人”的黑客攻击方法。它在技术上假装成为用户,在处理服务器时保持cookie ID在自己的会话上下文中,并为客户端计算机保留一个sparate。
因此,从理论上讲,它可以完成而且是一种威胁。如果数据以任何方式敏感,使用SSL是我认为的正确方法。
在此微软支持文章http://support.microsoft.com/kb/910443中有趣的是,这句话让您相信每个请求实际上都是相同的......
表单身份验证cookie只是表单身份验证票证的容器。故障单作为每个请求的表单身份验证cookie的值传递,并由服务器上的表单身份验证使用,以标识经过身份验证的用户。
可以使用3DES加密对cookie进行加密。可以通过将protection属性设置为web.config文件的身份验证部分的 Validation 来启用此功能。使用此设置,服务器将验证每个事务的cookie上的数据。 这虽然增加了一点开销......
答案 4 :(得分:0)
是的!只需确保在web.config表单标记
上添加:requireSSL =“true”<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" requireSSL="true" />
</authentication>
然后,您还可以使用一些重写来确保在需要身份验证的页面或目录上使用https。在MVC上,您可以使用[RequireHttps]过滤器属性。
<rewriteMap name="SSL_Required_pages" defaultValue="">
<add key="/simulacao-seguro-automovel.aspx" value="/simulacao-seguro-automovel.aspx" />
</rewriteMap>
<rule name="Enforce SSL pages">
<match url="(.*)" />
<conditions>
<add input="{SSL_Required_pages:{HTTP_URL}}" pattern="(.+)" />
<add input="{HTTPS}" pattern="off" />
<add input="{HTTP_HOST}" pattern="mysite\.com" />
</conditions>
<action type="Redirect" url="https://mysite.com/{R:1}" redirectType="Permanent" />
</rule>
<rule name="Enforce SSL to secure directories">
<match url="(.*)" />
<conditions>
<add input="{PATH_INFO}" pattern="^/admin/|^/admin|^/fale-conosco/|^/fale-conosco" />
<add input="{HTTPS}" pattern="off" />
<add input="{HTTP_HOST}" pattern="mysite\.com" />
</conditions>
<action type="Redirect" url="https://www.mysite.com/{R:1}" redirectType="Permanent" />
</rule>