php&;包含双引号字符串的javascript警报

php&;包含双引号字符串的javascript警报,javascript,php,string,xss,quotes,Javascript,Php,String,Xss,Quotes,这是我应该在javascript警报()中输出的字符串示例 包含“双引号”的字符串 因为我的用户可以通过PHP编辑这个字符串,所以最好防止XSS攻击。要在文档的HTML中执行此操作,我通常会执行以下操作: <?php echo( htmlspecialchars( $MY_STRING, ENT_QUOTES, 'UTF-8' ) ); ?> 这很有效 但现在我注意到,如果我在javascript警报中输出相同的字符串: <script> alert( "<?

这是我应该在javascript警报()中输出的字符串示例

包含“双引号”的字符串

因为我的用户可以通过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>

警报(“”);
在这种情况下,警报的输出为:

包含“双引号”的字符串


在警报中输出双引号的最佳方法是什么,但也要防止XSS注入?

ENT\u NOQUOTES
标志确保所有引号和“都不会转义,并且对于js警报功能,
addslashes
会转义它们

$string = 'string<< with "double quote" in it';
echo htmlentities(addslashes($string), ENT_NOQUOTES);
保留您的报价并转义恶意html标记

警报(“”);
alert( "<?php echo( addslashes( $MY_STRING ) ); ?>" );
使用
addslashes()
rahtr而不是
htmlspecialchars()
或两者结合使用。希望对您有所帮助


addslashes()

警报中的所有内容都被视为字符串,不会执行,因此,如果您只是通过转义

对于不需要使用htmlspecialchars的警报,您可以这样做:

<script>
    alert( "<?php echo addslashes($MY_STRING);  ?>" );
 </script>

警报(“”);

addslashes(strip_tags(…)
应该可以完成这项工作……您可以在发出警报之前将其放入div中:除非字符串类似于:
”;document.location(“)http://somekinkypornsitewithdonkeys.com')//
很高兴你编辑了答案,将其放入
addslashes
;)是的,正在进行中,编写和测试。顺便说一句,我测试了它,它工作正常,没有XSS,删除下一票?。这是一个不可读的输出。作者可能想要:使用“双引号”“在它里面:作为一个output@FranklinRivero那么他可以使用
addcslashes
而不是
addslashes
<script>
    alert( "<?php echo addslashes($MY_STRING);  ?>" );
 </script>