alert('hi')例如,我得到: 未捕-6ren">
gpt4 book ai didi

javascript - 在 JS 中回显 PHP 值时 token 无效

转载 作者:行者123 更新时间:2023-11-30 14:12:12 25 4
gpt4 key购买 nike

我将 PHP 值回显到 JavaSript 字符串中,如下所示:

var x = '<?php echo addcslashes($_GET['value'], "'") ?>';

它工作得很好,但是当我设置 $_GET['value'] 时作为"><script>alert('hi')</script>例如,我得到:

未捕获的语法错误:无效或意外的标记

在 DevTools 中,字符串看起来正确转义,但实际上并没有,因为它会停止其余的 JS 代码。

var x = '"><script>alert(\'hi\')</script>';

最佳答案

连续字符</script>不能存在于内联 Javascript 标记中。 HTML 标记在 Javascript 之前被解析,并且 </script><script> 开始后的 HTML 标记中标记表示该标记的结尾。

您可以改为连接,例如,您的文本将导致

var x = '"><script>alert(\'hi\')</scr' + 'ipt>';

通过使用 str_replace :

$withSlashes = addcslashes($_GET['value'], "'");
$xContent = str_replace('</script>', "</scr' + 'ipt>", $withSlashes);
...
var x = '<?php echo $xContent ?>';

但最好不要动态构造 Javascript 代码。考虑改用数据属性,并将 Javascript 分离到它自己的单独文件中,例如

<script
src="script.js"
data-x="<?php echo addcslashes($_GET['value'], "'") ?>"
></script>

(如果使用此方法,请记住正确转义 " 如果结果中可能存在)

关于javascript - 在 JS 中回显 PHP 值时 token 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54212978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com