yujinTODO回答ポイント なしウォッチ 2

URIの正規表現で質問させてください

http://www.hoge.com/foo/barなど普通のURIはいいのですが、
URIが正しいかのチェックをしようと思い
PHPにて|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i
とか
Zend_Uri::check($url)とかしたのですが、
@とか<>とかセキュリティ的にも\0とか不要であると思われるものをURI内に入れても普通にチェックを通ってしまいます
英数字、エンコードした時の文字とか有り得る文字以外はValidateチェックにて弾きたいと思うのですが、どのような正規表現が書けるものなのでしょうか?
[?&/%_-]*とかホワイトリスト的に書き加えようと思ったのですが、それ以外の有り得る文字列が分かりませんでした

・URI指示にてまず有り得ない文字が入っていたら排除したい
・NULLバイトなどセキュリティ的に問題があるものを排除したい

そもそもNULLバイトの場合は正規表現で省くのではなく、preg_match('/\0/', $uri)などで弾くのかもしれませんが

ログインして回答する
回答がありません

この質問へのコメント

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

質問の情報

登録日時
2011-11-02 16:53:56
終了日時
2011-11-09 16:55:02
回答条件
1人5回まで

この質問のカテゴリ

この質問に含まれるキーワード

ホワイトリスト28正規表現647PHP7798エンコード551URI127セキュリティ1794URL11376

人気の質問

メニュー

PC版