p97~p119 入力値検証
XSSをふせぐためにformから送信された値をチェックします
mb_check_encoding(チェック対象の文字列、 文字エンコーディングの指定(省略可能))
・文字数のチェック
・数値の最小値・最大値のチェック
・制御文字のチェックや制限(改行やタブ等)
正規表現による入力値検証
<?php
$p = $_GET['p'];
if (preg_match('/\A[a-z0-9]{1,5}\z/ui', $p) !== 1) {
die('1文字以上5文字以下の英数字を入力してください');
}
?>
/ … 正規表現の始まり
\A … 文字列の先頭
[a-z0-9] … 英数字にマッチ(※英字なら[a-zA-Z]とする)
{1,5} … 1文字から5文字(0文字でも良ければ{0,5})
\z … 文字列の末尾
/ … 正規表現のおわり
u … 修飾子(UTF-8エンコーディングとする)
i … 修飾子(大文字と小文字を区別しない)
\A と \zの代わりに^ と $を使った場合、行の先頭・末尾を意味するので改行文字(%0a)をつけると、改行文字以降の値がチェック(入力値検証)をすり抜けてしまいます
BACK