php - 如何将 &lt;/script&gt; 替换为 </scr"+"ipt>

标签 php javascript

好的,我从用户输入中得到了如下所示的内容,已知 </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/

相关文章:

javascript - AngularJS promise ,如何 $q.first.then(others[])

javascript - 在 ios 应用程序中发送包含 javascript 的 html 电子邮件

javascript - Yii2:来自 PHP 的 window.open

php - 我如何在 symfony3 中使用 "INSERT SELECT"?

PHP - 无法将 URL 查询字符串传递给模型以进行数据库查询

php - 如何在使用 "IN"子句的 php 中构建 mysql 查询

php - 警告 : mysql_fetch_object(): supplied argument is not a valid MySQL result resource in ,

javascript - 9933272057275866 是一个神奇的数字吗?

javascript - 如何在react.js中创建可重用的组件或部分组件?

javascript - 使用 vw 和 vh 度量调整窗口大小的问题