XSS, サニタイズ - novel-suzukikeisuke/study GitHub Wiki

XSS

  • 攻撃者が送り込んだ悪意あるコードをそのページを閲覧した不特定多数のユーザーに、簡易的なプログラムとして実行させる可能性があること
    • クロスサイトスクリプティング攻撃という
    • 攻撃者が罠を仕掛けたWebサイトから、標的となる別のWebサイトにユーザーを誘導、サイトをまたいで(クロスして)攻撃を行う
    • 偽のログインフォームに誘導されて入力したパスワードを盗み取られる
    • ユーザーに関する情報が保存されたcookieが盗まれる
    • ユーザーになりすましてSNSアカウントの乗っ取りやネットバンクでの不正な出金といった被害を受けてしまう危険性がある

サニタイズ

  • 特別な意味を持つ文字の特別さを無効化する処理
    • 例 : <br>&lt;br&gt;に置き換える処理
      • <br>は改行する意味を持つが&lt;br&gt;にサニタイズ処理を行うことで特別な意味を持たない単なる文字列として取り扱えるようになる
    • 掲示板やSNSの入力フォーム等から攻撃につながるコードを送信された場合
      • <script>を入力された場合、&lt;script&gt;に変換することで、Webアプリとしてソースコードとして使用される文字が、通常の文字として取る扱えるようになる
function htmlentities(str){
  return String(str).replace(/&/g,"&amp;")
    .replace(/</g,"&lt;")
    .replace(/>/g,"&gt;")
    .replace(/"/g,"&quot;")
}
  • replace(/⚪︎/g, "◆") : 〇を◆に置き換える
  • 上記の関数では&→&amp;, <→&lt;, >→&gt;, "→&"という置き換えが行われている
    • 入力文字列strをHTMLとしては意味のない文字・文字列に変換
⚠️ **GitHub.com Fallback** ⚠️