投稿フォームを作ったとき、最初は「あとでチェックすればいい」と思って、入力内容の検証や表示時の安全対策を後回しにしていました。
テスト中に、コードのような文字列やHTMLタグを本文に入れたとき、画面上でどう扱われるかを確認していないことに気づきました。実害は出ていませんが、ユーザー投稿を扱うサービスではかなり危ない考え方でした。
確認用に、以下のような無害なJavaScript風の文字列も本文に入れてテストします。
<script>console.log("shiku-hack-security-check")</script>
期待する挙動は、この文字列がスクリプトとして実行されず、ただの本文として安全に表示されることです。
今回の学びは、投稿機能は「保存できる」だけでは不十分で、「安全に表示できる」まで確認して初めて完成だということです。
