このページにはこう書かれています
XSS 関連の
htmlspecialchars()
攻撃を防ぐために SID を出力するときに使用できます。
を使用せずに SID を印刷すると、誰かがどのような攻撃を行う可能性がありますhtmlspecialchars()
か?
セッション ID には、数字と文字のみを含めることができます。何か不足していますか?
セッション ID は通常、クライアント(Cookie やGET
params など) に保存されるため、スクリプトや URL を変更することで変更できます。
ここで、誰かがCookie を変更SID
し、JS コードを変更して、他の場所にリダイレクトすることができたと想像してください。その値をエスケープせずにページに出力すると、Cookie をクリアするか JavaScript を無効にしない限り、ユーザーは毎回リダイレクトされます。
つまり、セッション ID はクライアントから取得され、安全ではありません (一部の PHP フレームワークなどに含まれる Cookie 署名など、変更されていないことを保証する追加のメカニズムを使用しない限り)。危害を与える。
これは、SQL クエリを作成するときにこの値を安全なものとして使用してはならない理由と同じです (したがって、SID は SQL インジェクションが可能な場所でもあります)。