有没有办法将经典ASP ASPSESSIONID * Cookie标记为安全?在我的页面完成渲染后,ASP ISAPI处理程序似乎添加了会话ID cookie,因此将代码放在我的页面末尾以循环遍历Response.Cookie集合并将它们标记为安全似乎不会触及ASPSESSIONID * cookie 。还有其他方法吗?
答案 0 :(得分:9)
答案是没有 IIS管理器提供的标准UI上没有。但是,您可以通过AspKeepSessionIDSecure元数据库值
答案 1 :(得分:3)
我执行这个命令:
CSCRIPT C:\ Inetpub \ AdminScripts \ adsutil.vbs设置w3svc / 1 / AspKeepSessionIDSecure 1
更多信息请访问:http://blogs.msdn.com/b/rahulso/archive/2007/06/19/cookies-case-study-with-ssl-and-frames-classic-asp.aspx
答案 2 :(得分:1)
[编辑:您可以忽略以下内容。我刚刚意识到你在谈论ASPSESSIONID。}
内置支持安全cookie。
请参阅http://msdn.microsoft.com/en-us/library/ms524757.aspx
示例(对于ASP.Net,而不是经典ASP):
Response.Cookies("setSecure") = "someValue"
Response.Cookies("setSecure").Secure = true
答案 3 :(得分:0)
根据here的发现,UrlRewrite规则可以处理此问题。
如果HttpOnly
Cookie上缺少Secure
和ASPSESSIONID
,则下面的规则会处理它们。 (对于其他cookie,通常它们是由站点ASP代码发出的:最好直接在负责它们的代码中进行处理。)
<system.webServer>
<rewrite>
<outboundRules>
<rule name="Add HttpOnly" preCondition="No HttpOnly">
<match serverVariable="RESPONSE_Set_Cookie" pattern="\s*ASPSESSIONID.*" />
<action type="Rewrite" value="{R:0}; HttpOnly" />
</rule>
<rule name="Add Secure" preCondition="No Secure">
<match serverVariable="RESPONSE_Set_Cookie" pattern="\s*ASPSESSIONID.*" />
<action type="Rewrite" value="{R:0}; Secure" />
<conditions>
<add input="{HTTP_HOST}" pattern="localhost" negate="true" />
</conditions>
</rule>
<preConditions>
<preCondition name="No HttpOnly">
<add input="{RESPONSE_Set_Cookie}" pattern="; HttpOnly" negate="true" />
</preCondition>
<preCondition name="No Secure" logicalGrouping="MatchAll">
<add input="{RESPONSE_Set_Cookie}" pattern="; Secure" negate="true" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
</system.webServer>
如果IIS服务器中未安装UrlRewrite,则会使站点崩溃。
请注意,如果通过Secure
而非http
合法访问了站点,则不应应用https
规则,因此在本地浏览时不会发出该条件。如果从客户端通过Secure
访问的站点发出了http
,则客户端不会将cookie发送回服务器。
(我避免测试入站协议,因为无论如何,除非最终直接从其托管服务器或负载均衡器访问,否则不应在http
上访问我正在工作的网站。)
我以前曾尝试使用asp/session/keepSessionIdSecure,但是它没有任何作用(至少对于负载均衡器后面的终止https并通过http访问站点服务器的站点)。此设置是AnthonyWJones answer指向的AspKeepSessionIDSecure
元数据库值的现代版本(IIS 7 +)。