-6ren"> -好的,我从用户输入中得到了如下所示的内容,已知 不会在 document.write() 函数中工作 document.write(""); 有没有办法替换 至 在 document.write() -6ren">
gpt4 book ai didi

php - 如何将 </script> 替换为

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

好的,我从用户输入中得到了如下所示的内容,已知 </script>不会在 document.write() 函数中工作

<script type="text/javascript">document.write("<script type='text/javascript' src='"+(location.protocol == 'https:' ? 'https:' : 'http:') + "//www.domain.com/script.js'></script>");</script>

有没有办法替换 </script></scr"+"ipt>在 document.write() 函数中?

最佳答案

Is there anyway to replace the </script> to </scr"+"ipt> inside document.write() function?

没有。

字符序列</script>在它到达 JavaScript 解析器之前就被 HTML 解析器解析为结束标记。

您必须在将源代码发送到浏览器之前对其进行编辑。


也就是说,有比查找 location.protocol 更好的方法来解决问题反正。改用方案相对 URI:

<script src="//www.example.com/script.js'></script>

或者将 HTML 文档的所有 HTTP 流量重定向到 HTTPS,这样您就永远不会在不安全的连接上提供服务。


您的评论表明您应该提出的问题是:

How can I place arbitrary submitted form data into a JavaScript string literal using PHP?

使用 json_encode功能。如果你给它传递一个字符串,它会给你一个适合插入 <script> 的 JavaScript 转义字符串。元素。 (但它不会是有效的 JSON 文本,因为它必须在最外层有一个对象或数组)。

<script>
document.write(<?php echo json_encode($_POST['script']); ?>);
</script>

严重安全警告:请勿在未实现 protection from CSRF attacks 的情况下执行此操作因为允许第三方导致您的用户向您的网站提交 JavaScript 可能是一个主要问题。

关于php - 如何将 &lt;/script&gt; 替换为 </scr"+"ipt>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16770823/

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