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