php&;包含双引号字符串的javascript警报
这是我应该在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( "<?
包含“双引号”的字符串
因为我的用户可以通过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>