Kobarin's Development Blog

C#やASP.NET、公開APIなどについての記録です。

ASP.NETフォームでデータ入力する際に、ヤバそうな文字を排除する正規表現

Textboxに何の検証も無しに文字列を受け付けると様々なトラブルを引き起こします。
検証コントロールの1つ、RegularExpressionValidator を使って「とりあえずこれだけは」やっておくと安心という正規表現を書きます。
ValidationExpressionに入れる文字列です。

^[^\<\>\&\"\']{0,20}$

1つ1つの意味を追っていきます(念のため全て全角表記)。
あと「¥」はエスケープであって排除してるわけではありません。

「文字列の先頭から」を意味する。お決まり。
最初の^と異なり、[]内に存ずる場合、「これ以降続くキャラクター”以外”」を意味する
HTMLタグで使うため、当然弾く必要がありますね。特にASP.NETではPostback時にエラーが起こります。
これも同様です
一般的には弾く必要もないかも知れませんが、 等もあるため念のため排除。入力したかったら全角の&
SQLインジェクション的にヤバそう
こっちは完全にSQLインジェクション対策
{0,20} 入力文字数制限。この場合、0〜20文字。