WEBシステムで、フォームの入力文字として、確認しておいた方が良い文字のパターンを列挙してみます。
(自分の備忘録として。思いついたら随時追記。)
HTMLエスケープ
<>&"'
入力した文字が、ちゃんと画面に表示されるか確認する。
例えば、<hr> "' のような文字を入れてみて、HTMLとして解釈されないようになっていること。
DBに登録されるような項目の場合、DB上にはどのような形で登録されるのか確認。(必要もなくエスケープしてDB上に登録していたりしないかなど)
JavaScriptへの埋め込み文字
<>&"'\
HTMLエスケープに絡んで、、JavaScriptのコードに対して、HTMLエスケープと同様にエスケープした文字を埋め込むと問題が起きる可能性があるので注意。
<hr>をエスケープした文字を埋め込むと、
alert("<hr>");
そのまま<hr>が出てしまう。
JavaScriptのコードに文字を挿入する場合には、"'\のみエスケープを行うようにする。
alert("\"\'\\");
SQLエスケープ
'"%_%_\
入力した文字が、ちゃんとDBに登録されるか確認する。
また、検索条件として文字を入力するようなフォームでは、指定した文字の内容で検索されるか確認する。(SQLインジェクションの危険性が無いか)
特に前方一致や後方一致で検索するような箇所(SQL文でLIKE句)では、%や_が、その文字自体として検索できるか確認する。"%"と入力して検索した場合に、全てのレコードがひっかかってきたりしないかなど。
特にOracleでは、%と_は全角でも特殊文字となるので、注意が必要。
文字エンコーディングによって、Unicodeとのマッピングに差がある文字
¢£¬‖−〜―
画面上から入力して正常にDBに登録されるか確認。
また、DBから画面に表示したり、ファイルとして出力した場合に文字化けしないか。
参考:Enjoy×Study - 文字エンコーディング毎のUnicodeマッピングの違いについて。