0

PHPを使用して、XSSを防ぐために'"(一重引用符の後に二重引用符が続く)を検出する必要があるため、以下の関数を実装しました。

function xss_cleaner_new($input_str){
    $return_str = preg_replace('/"\'/','&l', &input_str);
    return $return_str;
}

ただし、(一重引用符の後に二重引用符が続く)ではなく、(最初の一重引用符)のみが検出されるようです。

'"(一重引用符の後に二重引用符が続く)を正常に検出するにはどうすればよいですか?

4

2 に答える 2

1

これを試して:

preg_replace("/'\"/","&l",$input_str);
于 2012-09-07T09:32:06.780 に答える
0

考えてみてください。あなたが望むのは、一重引用符とそれに続く二重引用符を一致させることです。ただし、正規表現を確認して、よく考えてください。

'/"\'/'エスケープされたアポストロフィを含む、補間されていないPHP文字列リテラルが関数呼び出しに供給されています。文字列リテラルの値は/"'/、であるため、これは/-delineated正規表現になります。/すでに正規表現であると言ったので、 sを削除すると"'、または、二重引用符の後に一重引用符が続きます。これは、必要なものとは正反対です。別の方法で作業すると、それらを反転し('")、sで描写して/そのregexhoodを示し(/'"/)、次にアポストロフィで引用し、文字列リテラルが途中で終了しないように()、中に含まれるアポストロフィをエスケープし'/\'"/'ます。 'あなたが始めたところに戻ってください、あなただけが間違いを持っ​​ていません。

于 2012-09-15T17:53:47.083 に答える