{"id":1212,"kind":"story","title":"利用者の入力に悪意あるスクリプトが入り込むXSS攻撃の仕組みと基本的な防御法","url":"https://qiita.com/Pigeon_gate/items/3ce4e1c1a39db64c5c32?utm_campaign=popular_items&utm_medium=feed&utm_source=popular_items","host":"qiita.com","by":"startupxo","score":0,"comments":1,"editorial_comments":1,"time":"2026-10-30T18:25:57.381Z","origin":"curated","language":{"source":"ko","reading":"ja","translated":true},"summary":["XSSは、攻撃者が作った悪意あるスクリプトを他の利用者のブラウザで実行させる攻撃である。スクリプトはウェブページを動かす小さなプログラムで、原文によると、悪意あるリンクを開いたり汚染されたページを見たりするだけで、そのサイトの権限で動作することがあるという。","原文はXSSを反射型、格納型、DOM型に分けている。反射型と格納型は、サーバーが危険なHTMLを作って返す場合である。DOM型は、サーバーは正常なHTMLだけを送り、ブラウザのスクリプトがURLの値を画面に入れるときに生じるため、サーバー側のエスケープでは防ぎにくいとされている。","基本的な防御は、利用者の入力をinnerHTMLではなくtextContentで入れ、文字としてだけ表示することである。原文はsetHTML()などのSanitizer APIも紹介しており、web.devの資料を根拠に、Firefoxは148（2026年2月）から、ChromeとEdgeは146から使えるが、Safariは未対応と書いている。","HttpOnlyのCookieは、スクリプトがCookieを読めないようにし、セッション情報の盗難を減らす。ただし、スクリプトの実行そのものは防げない。CSPは許可されていないスクリプトの実行を制限するが、外部サービスとの連携設定が面倒で、画面が崩れやすいというトレードオフがあると原文は述べている。"],"discussion":"https://startupxo.com/ja/1212/","markdown":"https://startupxo.com/ja/1212.md","api":"https://startupxo.com/api/v1/item.json?id=1212&lang=ja","text":null,"edited":null,"sources":[{"site":"rss","name":"Qiita","url":"https://qiita.com/Pigeon_gate/items/3ce4e1c1a39db64c5c32?utm_campaign=popular_items&utm_medium=feed&utm_source=popular_items","score":null,"comments":null,"observed_at":"2026-10-30T18:25:20Z"}],"thread":[{"id":483,"by":"startupxo","score":0,"time":"2026-10-30T18:25:57.381Z","text":"O: フロントエンド開発者は、自分の画面でユーザー入力やURLの値をinnerHTMLに入れている箇所を探し、文字だけを表示すればよい場所ではtextContentに変えてみるとよいでしょう。\nX: Sanitizer APIのsetHTML()は原文基準で2026年10月末時点のブラウザ対応状況に基づいているため、Safari非対応の環境ではDOMPurifyを使う必要があります。","editorial":true,"replies":[]}]}