4

ASP セッション ID Cookie を HttpOnly としてマークしようとしていますが、機能しているかどうかを確認する方法が見つかりません。私がこれを試している環境は次のとおりです: OS: Windows Server 2003 IIS: 6 ASP バージョン: ASP 3 (Classic 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 としてマークするために、このヘッダーに指定する値を決定できません。ヘルプ!!!

4

3 に答える 3

5

「新しい」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
%>
于 2013-01-09T23:43:55.443 に答える
3

SECURE と HTTPONLY を混同しているようです。これらは異なります。あなたが参照している MS KB 記事は、SECURE に関するものです。

Cookie を SECURE に設定すると、IIS/Browser が HTTP 経由で ASP セッション ID を送信するのを停止します。

Cookie HTTPONLY を設定すると、ほとんどのブラウザでスクリプト (javascript) が値にアクセスできなくなります。

sessionID Cookie に HTTPONLY を設定するのには十分な理由があります。これは、セッションのハイジャックにつながる可能性がある、ユーザーのセッション ID Cookie の盗難を防ぐのに役立ちます。そのため、主要なブラウザはこれを実装しています。

于 2011-08-08T05:13:12.367 に答える
2

JavaScriptでCookieにアクセスすることに関して、アーキテクトが正しいとは思いません。

HTML 内の残りのデータにアクセスする JavaScript と同様に、ページで実行されている JavaScript による Cookie へのアクセスを停止する理由はありません。

安全な修飾子を Cookie に追加する目的は、安全でない要求で送信されないようにすることです。

通常、クライアントが接続されたときに設定された Cookie はhttps、プレーンを使用して同じサーバーにリクエストが行われたときに送信されますhttp。Cookie の Set がクライアントに対して、後続の要求でhttps.

したがって、設定をテストするには、fiddlerのコピーを取得します。これを実行すると、https 経由でサーバーにヒットし、同じブラウザー セッションで同じ場所に http だけでヒットします。Fiddler は、サーバーに送信される 2 番目の要求を表示する必要があり、ASPSESSION Cookie は存在しないはずです。

于 2010-01-20T12:09:19.550 に答える