TOFU(流入を増やす)
『動くからヨシ』は危険。AIコードをそのまま本番公開してはいけない3つのセキュリティリスク
Peingなどの投稿サイトでも過去に問題になったXSSやSQLインジェクション。AIが書く「動くコード」と「安全なコード」の違い、そして最低限行うべきサニタイズ処理について解説します。
XSSSQLインジェクションセキュリティAIコード
質問箱サービス「Peing」などで過去に話題になった脆弱性の一つに、XSS(クロスサイトスクリプティング)があります。
これは、投稿フォームに悪意あるスクリプト( <script>... )を入力することで、そのページを見た他のユーザーの情報を抜き取ったりする攻撃です。
AIは「性善説」でコードを書く
AIに「掲示板アプリを作って」と頼むと、AIは**「ユーザーは正しいテキストだけを入力してくれる」という前提(性善説)**でコードを書くことが多いです。
// 危険な例(そのまま表示している)
<div>{userComment}</div>
ここに悪意あるコードを投稿されると、そのまま実行されてしまいます。
3大セキュリティリスク
- XSS(クロスサイトスクリプティング) ニセのログイン画面を表示させたり、Cookieを盗んだりする。
- SQLインジェクション 入力欄に特殊な文字を入れて、データベースを勝手に操作・削除する。
- CSRF(クロスサイトリクエストフォージェリ) ユーザーが意図しない操作(勝手に退会させる、購入させる等)を勝手に行わせる。
「サニタイズ」という防波堤
これらの攻撃を防ぐには、ユーザーからの入力を無害化する「サニタイズ(消毒)」処理が必要です。
また、ReactやNext.jsなどのモダンなフレームワークは標準でXSS対策を持っていますが、dangerouslySetInnerHTML のような機能を使うとそれが無効化されてしまいます。
AIが書いたコードの中に dangerously... という単語があったら要注意。それは「セキュリティの安全装置を外します」という宣言かもしれません。
公開前に必ず、セキュリティのプロによるコード診断を受けるか、自動スキャナで脆弱性をチェックしましょう。