好的,我在用户输入下面看起来像下面的东西,已知</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>
是否有替换document.write()函数内的</script>
到</scr"+"ipt>
?
答案 0 :(得分:4)
是否有替换document.write()函数内的
</script>
到</scr"+"ipt>
?
没有
字符序列</script>
在HTML解析器到达JavaScript解析器之前被HTML解析器解析为结束标记。
您必须先编辑源代码,然后再将其发送到浏览器。
也就是说,有更好的方法可以解决问题,然后再看location.protocol
。改为使用方案相对URI:
<script src="//www.example.com/script.js'></script>
或者将HTML文档的所有HTTP流量重定向到HTTPS,以便您永远不会在不安全的连接上提供它。
您的意见表明您应该问的问题是:
如何使用PHP将任意提交的表单数据放入JavaScript字符串文字?
使用json_encode
功能。如果你传递一个字符串,它将为你提供一个适合插入<script>
元素的JavaScript转义字符串。 (但它不是一个有效的JSON文本,因为它必须在最外层有一个对象或数组。)
<script>
document.write(<?php echo json_encode($_POST['script']); ?>);
</script>
严重安全警告:如果不实施protection from CSRF attacks,请勿执行此操作,因为允许第三方导致用户向您的网站提交JavaScript可能是一个主要问题。