3

これは、入力されたセキュリティの質問や回答に悪意のある文字が含まれているかどうかを確認する機能です。

function validate_input($field) {
    $ErrorMessage = ""; 
    $field = preg_replace("/[\s]+is/", '', $field);
    if(preg_match("/^[A-Za-z0-9'?!-\s]+$/", $field ) ===0) {
        $ErrorMessage .= "<div class='error_message'>Potentially malicious characters found in:<i> " . $field . ",</i> please enter only alphanumeric characters</div/><br/>";
    } return $ErrorMessage;
}

「What's up?」と入力すると 質問の場合、エラーが返されます。($field) で var_dump を実行すると、"What\'s up?" として返されます。

では、スラッシュを使用可能な文字として含めるにはどうすればよいでしょうか?

4

2 に答える 2

3

PHP の「マジック クォート」機能がアクティブになっているように見えますが、これはセキュリティ上の理由からすべきではありません。ユーザーが挿入したデータのエスケープはすべて、独自のコードで行う必要があります。

とにかく、現状を維持したい場合は、交換してください。

preg_match("/^[A-Za-z0-9'?!-\s]+$/", $field)

preg_match("/^[A-Za-z0-9'?!-\s\\\\]+$/", $field )

二重引用符で区切られた文字列と正規表現の両方でエスケープする必要があるため、4 重の \ が存在します。

于 2012-08-22T18:59:35.210 に答える
0

スラッシュやその他の通常の文字を許可する例。

    $string = "J’s Bikes/IHOP";  // bad user input 
    if (!preg_match("/^[A-Za-z0-9!@#$%&()*;:_.'\/\\\\ ]+$/", $string)) {
       echo "Invalid $string";          
       }
于 2013-02-23T04:24:20.120 に答える