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 因为我们已经说过它是一个正则表达式,你得到"',或者,一个双引号后跟一个单引号,这与你想要的完全相反。换一种方式'",我们可以翻转它们('回到你开始的地方,只有你没有错误。//'"/'/\'"/'

于 2012-09-15T17:53:47.083 回答