AIのあとしまつ

TOFU(流入を増やす)

『動くからヨシ』は危険。AIコードをそのまま本番公開してはいけない3つのセキュリティリスク

Peingなどの投稿サイトでも過去に問題になったXSSやSQLインジェクション。AIが書く「動くコード」と「安全なコード」の違い、そして最低限行うべきサニタイズ処理について解説します。

XSSSQLインジェクションセキュリティAIコード

質問箱サービス「Peing」などで過去に話題になった脆弱性の一つに、XSS(クロスサイトスクリプティング)があります。 これは、投稿フォームに悪意あるスクリプト( <script>... )を入力することで、そのページを見た他のユーザーの情報を抜き取ったりする攻撃です。

AIは「性善説」でコードを書く

AIに「掲示板アプリを作って」と頼むと、AIは**「ユーザーは正しいテキストだけを入力してくれる」という前提(性善説)**でコードを書くことが多いです。

// 危険な例(そのまま表示している)
<div>{userComment}</div>

ここに悪意あるコードを投稿されると、そのまま実行されてしまいます。

3大セキュリティリスク

  1. XSS(クロスサイトスクリプティング) ニセのログイン画面を表示させたり、Cookieを盗んだりする。
  2. SQLインジェクション 入力欄に特殊な文字を入れて、データベースを勝手に操作・削除する。
  3. CSRF(クロスサイトリクエストフォージェリ) ユーザーが意図しない操作(勝手に退会させる、購入させる等)を勝手に行わせる。

「サニタイズ」という防波堤

これらの攻撃を防ぐには、ユーザーからの入力を無害化する「サニタイズ(消毒)」処理が必要です。 また、ReactやNext.jsなどのモダンなフレームワークは標準でXSS対策を持っていますが、dangerouslySetInnerHTML のような機能を使うとそれが無効化されてしまいます。

AIが書いたコードの中に dangerously... という単語があったら要注意。それは「セキュリティの安全装置を外します」という宣言かもしれません。

公開前に必ず、セキュリティのプロによるコード診断を受けるか、自動スキャナで脆弱性をチェックしましょう。