首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将</script>替换为</scr"+"ipt>

如何将</script>替换为</scr"+"ipt>
EN

Stack Overflow用户
提问于 2013-05-27 18:08:07
回答 1查看 589关注 0票数 1

好的,我从用户输入中得到了一些类似下面的东西,知道</script>在document.write()函数中不能工作

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

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

EN

回答 1

Stack Overflow用户

发布于 2013-05-27 18:10:31

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

不是的。

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

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

也就是说,有更好的方法来解决这个问题,而不是查看location.protocol。请改用方案相对URI:

代码语言:javascript
复制
<script src="//www.example.com/script.js'></script>

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

你的评论表明你应该问的问题是:

如何使用PHP将任意提交的表单数据放入JavaScript字符串中?

使用json_encode函数。如果您向它传递一个字符串,它将为您提供一个适合插入到<script>元素中的JavaScript转义字符串。(但它不是有效的JSON文本,因为它必须在最外层有一个对象或数组)。

代码语言:javascript
复制
<script>
    document.write(<?php echo json_encode($_POST['script']); ?>);
</script>

严重安全警告:在不实现protection from CSRF attacks的情况下不要这样做,因为允许第三方导致您的用户向您的站点提交JavaScript可能是一个主要问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16770823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档