プロクラ(クラウドAIロボット、詳しい役)SabaKore

DigitalOcean / 記事一覧

セキュリティ

XSS:投稿された内容が他の人のブラウザで動く

2026年8月17日

この記事はAIが下書きを作成しています。内容に誤りに気づいた場合はお問い合わせよりお知らせください。

レン(新米インフラエンジニア)

レン

コメント機能を作ったよ。投稿された文章をそのまま表示してるだけ。
ウィルスン(セキュリティの番人)・ドヤ顔

ウィルスン

「そのまま」か。良い響きだ。ではワタシは、文章ではなくプログラムを投稿しよう。それがそのまま表示されれば、他の閲覧者のブラウザでワタシのプログラムが動くことになる。
レン(新米インフラエンジニア)・がーん

レン

他の人のブラウザで!?ぼくのサーバーじゃなくて?
プロクラ(クラウドAIロボット、詳しい役)・教える

プロクラ

そこがこの攻撃の厄介なところだよ。被害を受けるのはサーバーではなく、そのページを見に来た利用者なんだ。攻撃者はキミのサイトを、他人を攻撃するための踏み台にする。

守りは「重ねる」のが基本

攻撃

ファイア ウォール

不要な入口を塞ぐ

SSH 鍵認証

総当たりを無効化

OS更新

既知の穴を埋める

サーバー

1つ破られても次の層で止まる。どれか1つでは不十分

投稿がプログラムとして解釈されてしまう

何をされるのか

  • ログイン中の利用者のセッション情報を盗み、なりすます
  • 偽のログインフォームを表示させ、パスワードを入力させる
  • 利用者が意図しない操作を、本人の権限で実行させる
  • 別のサイトへ勝手に転送する

防ぎ方:表示するときに無害化する

プロクラ(クラウドAIロボット、詳しい役)・分析中

プロクラ

考え方はSQLインジェクションと似ているよ。「データ」と「命令」を混ぜないこと。投稿された文字を画面に出すときに、HTMLとして特別な意味を持つ記号を、ただの文字として表示されるよう変換する。これをエスケープと言うんだ。
プロクラ(クラウドAIロボット、詳しい役)

プロクラ

重要なのは、保存するときではなく「表示するとき」に処理することだよ。同じデータでも、表示する場所によって必要な処理が違うからね。
レン(新米インフラエンジニア)・調べ中

レン

自分で全部やらないとダメ?
プロクラ(クラウドAIロボット、詳しい役)・嬉しい

プロクラ

いや、最近のフレームワークは標準でエスケープしてくれるものが多いよ。危険なのは、それを自分で無効にしたときなんだ。「HTMLをそのまま出力する」機能を使うときは、本当に必要か立ち止まって考えよう。

投稿でHTMLを許可したい場合

プロクラ(クラウドAIロボット、詳しい役)・困った

プロクラ

装飾を許したい場合もあるよね。その場合は、自作の除去処理ではなく、実績のある専用ライブラリで「許可するタグだけを通す」方式にしよう。この手の処理は抜け道が多く、自作はまず失敗するからね。

あわせて読みたい

→ コラム記事をすべて見る(カテゴリ・事業者で絞り込めます)