php & javascript 包含带双引号的字符串的警报
php & javascript alert that contains a string with double quote
这是我应该在 javascript alert();
中输出的字符串示例
string with "double quote" in it
因为我的用户可以通过 PHP 编辑这个字符串,所以更好地防止 XSS 攻击。要在我的文档的 HTML 中这样做,我通常会这样做:
<?php echo( htmlspecialchars( $MY_STRING, ENT_QUOTES, 'UTF-8' ) ); ?>
效果很好。
但现在我才注意到,如果我在 javascript 警报中输出相同的字符串:
<script>
alert( "<?php echo( htmlspecialchars( $MY_STRING, ENT_QUOTES, 'UTF-8' ) ); ?>" );
</script>
这种情况下警报的输出是:
string with "double quote" in it
在警报中输出双引号的最佳方式是什么,同时还能防止 XSS 注入?
ENT_NOQUOTES
标志确保所有引号 ' 和 " 不被转义并且 addslashes
将它们转义以用于 js 警报功能。
$string = 'string<< with "double quote" in it';
echo htmlentities(addslashes($string), ENT_NOQUOTES);
输出:
string<< with \"double quote\" in it
保留您的报价并转义恶意 html 标签
alert( "<?php echo( addslashes( $MY_STRING ) ); ?>" );
使用 addslashes()
而不是 htmlspecialchars()
或将两者结合使用。希望对你有帮助。
addslashes()
http://php.net/manual/en/function.addslashes.php
alert 中的所有内容都被视为字符串并且不会被执行,因此如果您只是通过转义“
来确保它是单个字符串,就不会受到 XSS 攻击
对于警报,您不需要使用 htmlspecialchars,您可以这样做:
<script>
alert( "<?php echo addslashes($MY_STRING); ?>" );
</script>
这是我应该在 javascript alert();
中输出的字符串示例string with "double quote" in it
因为我的用户可以通过 PHP 编辑这个字符串,所以更好地防止 XSS 攻击。要在我的文档的 HTML 中这样做,我通常会这样做:
<?php echo( htmlspecialchars( $MY_STRING, ENT_QUOTES, 'UTF-8' ) ); ?>
效果很好。
但现在我才注意到,如果我在 javascript 警报中输出相同的字符串:
<script>
alert( "<?php echo( htmlspecialchars( $MY_STRING, ENT_QUOTES, 'UTF-8' ) ); ?>" );
</script>
这种情况下警报的输出是:
string with "double quote" in it
在警报中输出双引号的最佳方式是什么,同时还能防止 XSS 注入?
ENT_NOQUOTES
标志确保所有引号 ' 和 " 不被转义并且 addslashes
将它们转义以用于 js 警报功能。
$string = 'string<< with "double quote" in it';
echo htmlentities(addslashes($string), ENT_NOQUOTES);
输出:
string<< with \"double quote\" in it
保留您的报价并转义恶意 html 标签
alert( "<?php echo( addslashes( $MY_STRING ) ); ?>" );
使用 addslashes()
而不是 htmlspecialchars()
或将两者结合使用。希望对你有帮助。
addslashes()
http://php.net/manual/en/function.addslashes.php
alert 中的所有内容都被视为字符串并且不会被执行,因此如果您只是通过转义“
来确保它是单个字符串,就不会受到 XSS 攻击对于警报,您不需要使用 htmlspecialchars,您可以这样做:
<script>
alert( "<?php echo addslashes($MY_STRING); ?>" );
</script>