如何保护经典ASP ASPSESSIONID cookie?

如何保护经典ASP ASPSESSIONID cookie?,session,cookies,asp-classic,Session,Cookies,Asp Classic,有没有办法将经典ASP ASPSESSIONID*cookies标记为安全的?ASP ISAPI处理程序似乎在我的页面渲染完成后添加了会话id cookie,因此将代码放在我的页面末尾以循环通过Response.cookie集合并将其标记为secure似乎不会影响ASPSESSIONID*cookie。还有其他方法吗?答案是没有,IIS管理器提供的标准UI上没有。但是,您可以通过元数据库值为SessionID启用安全cookie。[编辑:您可以忽略以下内容。我刚刚意识到您在谈论ASPSESSIO

有没有办法将经典ASP ASPSESSIONID*cookies标记为安全的?ASP ISAPI处理程序似乎在我的页面渲染完成后添加了会话id cookie,因此将代码放在我的页面末尾以循环通过Response.cookie集合并将其标记为secure似乎不会影响ASPSESSIONID*cookie。还有其他方法吗?

答案是没有,IIS管理器提供的标准UI上没有。但是,您可以通过元数据库值为SessionID启用安全cookie。[编辑:您可以忽略以下内容。我刚刚意识到您在谈论ASPSESSIONID。}

内置了对安全cookie的支持

示例(适用于ASP.Net,而非经典ASP)

Response.Cookies("setSecure") = "someValue"
Response.Cookies("setSecure").Secure = true

我运行这个命令:

C:\Inetpub\AdminScripts\adsutil.vbs set w3svc/1/AspKeepSessionIDSecure 1

此处的详细信息:

如发现的,规则可以处理此问题

如果
ASPSESSIONID
cookie中缺少
HttpOnly
Secure
,下面的规则可以处理添加这两个cookie的操作。(对于其他cookie,通常由站点ASP代码发出:最好直接在负责它们的代码中处理。)


IIS服务器中未安装,这将使站点崩溃

请注意,如果站点是通过
http
而不是
https
合法访问的,则不应应用
Secure
规则,因此在本地浏览时不发出该规则的条件。如果通过
http
访问的站点从客户端发出
Secure
,则客户端不会发送co好的,回到服务器

(我避免测试入站协议,因为我工作的站点无论如何都不应该在
http
上访问,除非最终直接从其宿主服务器或负载平衡器上访问。)


我以前尝试过使用,但没有效果(至少对于负载平衡器后面的站点,终止https并通过http访问站点服务器)。此设置是现代版本(IIS 7+)由于我的站点希望所有通信都是通过https进行的,我想知道cookie不会被不安全地传输。以下文档的第8-10页解释了为什么需要安全标志:假设所有通信都通过https,则不会。有一个pos如果用户从http中删除“s”并尝试与您的站点对话,可能会出现这种情况。但即使他们这样做了,如果您的站点只使用Https,有什么害处呢?我完全同意您的说法,这是牵强的,但我们的一个客户在查看我们的代码时提出了这个问题。这不是一个高优先级的问题,而是我想要的进行调查。即使服务器不使用http,浏览器也不知道这一点,并且会通过http发送cookie,因为cookie上没有设置安全位。顺便说一句,此链接:使我认为这是可能的,甚至是受支持的。这篇文章讲的是IIS4或5,但我正在运行5.1和6。您有支持您的应用程序的文档吗回答“不,这是不可能的”?不,事实上我刚刚找到了一些文档,说明了这是如何可能的;)。答案经过调整,有一种方法可以做到这一点。方便的脚本。注意:通过设置w3svc/[site identifier here]/AspKeepSessionIdSecure 1,为每个所需的网站运行一次,问题是关于经典ASP而不是ASP.net
<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>