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"=>"/ ... /"))))
正規表現のウィザードの誰かが私にこれを手伝ってもらえますか?ありがとうございました。
私は "あなたの問題を解決する"ことを試みる前に:正規表現でXSS攻撃を防止しようとするのは良い考えではありません。代わりに単に出力を消毒するだけです。 –
@TomLord入力の妥当性検査は、セキュリティと呼ばれるチェーン内のリンクの1つに関係なく、常に実行する必要があります。 XSSから保護される出力エスケープも別のリンクです。どちらも常に適用する必要があります。 – ChristianF
@ChristianFこの場合、妥当な入力検証(そしてあなたが以下に示唆したこと)は、文字列が有効なファイルパスを表すことだけです。私の主張は、正規表現を使って '