2016-10-25 6 views
1

どこでも探していましたが、http://またはwww ... URLでは数多くの正規表現がありますが、サーバー内で使用されるリンクはありません。そのため例えば:PHP:プロトコルなしの絶対パスURLのfilter_inputまたはregex

/img/<"?">/ 

/img/content/.../file.ext<script>alert("Script")</script> 

が有効ではありません

/folder1/folder2/.../file.ext 

私の場合は次のようにパスを検証/サニタイズする必要があります。有効とは、「/」で始まるパスであり、その後に有効なフォルダ名と「/」の組み合わせが続き、ファイル名と拡張子で終わります。

PHPの組み込みFILTER_VALIDATE_URLまたはFILTER_SANITIZE_URLは、このようなパスを有効なURLとして受け入れません。だから私は正規表現を使用する必要がありますね。

filter_var($url, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/ ... /")))) 

正規表現のウィザードの誰かが私にこれを手伝ってもらえますか?ありがとうございました。

+1

私は "あなたの問題を解決する"ことを試みる前に:正規表現でXSS攻撃を防止しようとするのは良い考えではありません。代わりに単に出力を消毒するだけです。 –

+0

@TomLord入力の妥当性検査は、セキュリティと呼ばれるチェーン内のリンクの1つに関係なく、常に実行する必要があります。 XSSから保護される出力エスケープも別のリンクです。どちらも常に適用する必要があります。 – ChristianF

+0

@ChristianFこの場合、妥当な入力検証(そしてあなたが以下に示唆したこと)は、文字列が有効なファイルパスを表すことだけです。私の主張は、正規表現を使って '

関連する問題