http://gihyo.jp/dev/serial/01/php-security/0005?page=3


上記のページでなぜ、「不完全なバリデーション」なのか理解できませんでした。(preg_match)
どなかたお教えいただけないでしょうか?

回答の条件
  • 1人2回まで
  • 登録:2007/04/20 23:19:31
  • 終了:2007/04/27 23:20:03

回答(1件)

id:studioes No.1

studioes回答回数522ベストアンサー獲得回数612007/04/20 23:34:25

ポイント60pt

^[0-9]+$

^は行の頭で、$は行の終わり(1行目の終わり=改行)を表すものです。

改行コードを含めて送信すれば、

1

' or true=true or'

みたいなものでもマッチしてしまいます。

下のD修飾が正しいのは

http://php.mirror.camelnetwork.com/manual/ja/reference.pcre.patt...

D (PCRE_DOLLAR_ENDONLY)

この修飾子を設定すると、パターン内のドルメタ文字は、検索対象文字列の 終わりにのみマッチします。この修飾子を設定しない場合、ドル記号は、 検索対象文字列の最後の文字が改行文字であれば、その直前にもマッチします。 この修飾子は、m を設定している場合に無視されます。 Perl には、この修飾子に等価なものはありません。

id:miya1414

ありがとうございます。理解できました。

しかし、検証のために改行コードを含めて送信し、チェックをすり抜けるサンプルコードがどうしても作成できませんでした。

お手数ですが、サンプルコードを書いていただけないでしょうか?

2007/04/20 23:46:07

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません