セッション Cookie で HttpOnly 属性の欠落が検出されました

NSFOCUS「リモートセキュリティ評価システム」のセキュリティ評価レポートについて、その処理過程を記録します。

セッション Cookie で HttpOnly 属性の欠落が検出されました

詳細な説明

セッション Cookie に HttpOnly 属性がないと、攻撃者がプログラム (JS スクリプト、アプレットなど) を通じてユーザーの Cookie 情報を取得できるようになり、ユーザーの Cookie 情報が漏洩し、攻撃者のクロスサイト スクリプティング攻撃の脅威が増大します。 。

HttpOnly は Microsoft が作成した Cookie の拡張機能であり、この値はクライアント側のスクリプトから Cookie にアクセスできるかどうかを指定します。Microsoft Internet Explorer バージョン 6 Service Pack 1 以降では、Cookie 属性 HttpOnly がサポートされています。

Cookie の HttpOnly 属性が true に設定されていない場合、Cookie が盗まれる可能性があります。盗まれた Cookie には、ASP.NET セッション ID やフォーム認証チケットなど、サイト ユーザーを識別する機密情報が含まれている可能性があり、攻撃者は盗まれた Cookie を再生してユーザーになりすましたり、機密情報を取得したり、クロスサイト スクリプティング攻撃などを実行したりする可能性があります。

Cookie の HttpOnly 属性が true に設定されており、互換性のあるブラウザが HttpOnly Cookie を受信する場合、クライアントはプログラム (JS スクリプト、アプレットなど) を通じて Cookie 情報を読み取ることができなくなり、相互干渉を軽減するのに役立ちます。サイトスクリプティングの脅威。

解決

すべてのセッション Cookie に「HttpOnly」属性を追加します。

Java の例:

HttpServletResponse response2 = (HttpServletResponse)response;
response2.setHeader( "Set-Cookie", "name=value; HttpOnly"); 

C# の例:

HttpCookie myCookie = new HttpCookie("myCookie");   
myCookie.HttpOnly = true;  
Response.AppendCookie(myCookie);

VB.NET の例:

Dim myCookie As HttpCookie = new HttpCookie("myCookie")  
myCookie.HttpOnly = True  
Response.AppendCookie(myCookie) 

PHPソリューション

上記はレポートで提供された情報ですが、実際に私が保守しているプロジェクトは PHP なので、この問題を PHP で解決する方法を説明します。
php.iniを変更する

session.cookie_httponly = 1

サービスを再起動するだけです。

このバグがまだあるかどうかを確認してください

alert(document.cookie);

ここに画像の説明を挿入
値が取得できた場合は、このBUGがあることを意味します。

次の図に示すように、別の方法もあります。
ここに画像の説明を挿入

参考

https://stackoverflow.com/questions/51205876/https-cookie-httponly-and-secure

おすすめ

転載: blog.csdn.net/lxyoucan/article/details/131724444