代码之家  ›  专栏  ›  技术社区  ›  Sudhanshu Mishra

经典ASP:如何检查aspsessionid*cookie是否标记为安全?

  •  3
  • Sudhanshu Mishra  · 技术社区  · 16 年前

    我试图将ASP会话ID cookie标记为httponly,但似乎找不到方法来判断它是否工作。我尝试的环境如下: 操作系统:Windows Server 2003 IIS:6 ASP版本:ASP 3(经典ASP)

    为了只将cookie标记为http,我跟踪了 MS KB

    根据架构师的建议,为了测试这是否有效,javascript document.cookie不应该能够读取aspsessionid*cookie。我的问题是javascript:alert(document.cookie)仍然回响aspsessionid*cookie,尽管它似乎是加密的(?)

    我还尝试通过response.addheader“set cookie”来实现这一点,但无法确定要为此头提供什么值来将所有cookie或至少ASP会话ID cookie标记为httponly。 救命!!!!

    3 回复  |  直到 7 年前
        1
  •  2
  •   AnthonyWJones    16 年前

    我认为您的架构师在使用JavaScript访问cookie方面不正确。

    除了javascript访问HTML中的其余数据之外,没有理由停止在页面中运行的javascript访问cookie。

    将安全限定符添加到cookie的目的是防止在不安全的请求中发送它。

    或者在客户端连接时使用 https 在使用plain向同一服务器发出请求时仍将发送 http .当一个cookie的集合向客户机表明,如果这些请求使用安全限定符,那么在随后的请求中只应发送该cookie。 HTTPS .

    因此,为了测试你的设置,给自己一份 fiddler ,通过https点击服务器,然后在同一浏览器会话中,只使用http点击同一位置。Fiddler应该显示到服务器的第二个请求,不应该存在AspSession cookie。

        2
  •  4
  •   Frédéric    7 年前

    刚刚遇到这个问题是因为“新的”PCI合规性项目。这有点笨拙,但这似乎奏效了:

    <%
    Dim AspSessionCookie
    AspSessionCookie = Request.ServerVariables("HTTP_COOKIE")
    
    If len(AspSessionCookie) > 0 Then
        AspSessionCookie = "ASPSESSIONID" & Split(AspSessionCookie,"ASPSESSIONID")(1)
        If  InStr(1,AspSessionCookie,";") then
            AspSessionCookie = Split(AspSessionCookie,";")(0)        
        End If
    
        Response.AddHeader "Set-Cookie", AspSessionCookie & ";HttpOnly"
    Else 
        Response.redirect(Request.ServerVariables("URL"))
    End If
    %>
    
        3
  •  3
  •   Steve Wombat    14 年前

    您似乎对secure和httponly感到困惑 这些是不同的。您提到的MS知识库文章是为了安全起见。

    设置cookie安全将停止IIS/浏览器通过HTTP发送ASP会话ID。

    设置cookie httponly将阻止脚本(javascript)访问大多数浏览器中的值。

    在sessionid cookie上设置httponly是一个很好的理由。它有助于防止用户sessionid cookie被盗,这可能导致会话劫持。这就是主要浏览器实现它的原因。

    推荐文章