WEBシステムでの入力文字のテストについて

スポンサーリンク

WEBシステムで、フォームの入力文字として、確認しておいた方が良い文字のパターンを列挙してみます。
(自分の備忘録として。思いついたら随時追記。)

HTMLエスケープ

<>&"'

入力した文字が、ちゃんと画面に表示されるか確認する。
例えば、<hr>&nbsp;"' のような文字を入れてみて、HTMLとして解釈されないようになっていること。
DBに登録されるような項目の場合、DB上にはどのような形で登録されるのか確認。(必要もなくエスケープしてDB上に登録していたりしないかなど)

JavaScriptへの埋め込み文字

<>&"'\

HTMLエスケープに絡んで、、JavaScriptのコードに対して、HTMLエスケープと同様にエスケープした文字を埋め込むと問題が起きる可能性があるので注意。
<hr>をエスケープした文字を埋め込むと、

alert("&lt;hr&gt;");

そのまま&lt;hr&gt;が出てしまう。
JavaScriptのコードに文字を挿入する場合には、"'\のみエスケープを行うようにする。

alert("\"\'\\");

SQLエスケープ

'"%_%_\

入力した文字が、ちゃんとDBに登録されるか確認する。
また、検索条件として文字を入力するようなフォームでは、指定した文字の内容で検索されるか確認する。(SQLインジェクションの危険性が無いか)
特に前方一致や後方一致で検索するような箇所(SQL文でLIKE句)では、%や_が、その文字自体として検索できるか確認する。"%"と入力して検索した場合に、全てのレコードがひっかかってきたりしないかなど。
特にOracleでは、%と_は全角でも特殊文字となるので、注意が必要。

文字エンコーディングによって、Unicodeとのマッピングに差がある文字

¢£¬‖−〜―

画面上から入力して正常にDBに登録されるか確認。
また、DBから画面に表示したり、ファイルとして出力した場合に文字化けしないか。
参考:Enjoy×Study - 文字エンコーディング毎のUnicodeマッピングの違いについて。

番外編

システムとして下記の文字の扱いは明確にしておく。