我该如何更换?

时间:2013-05-27 10:08:07

标签: 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>

是否有替换document.write()函数内的</script></scr"+"ipt>

1 个答案:

答案 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可能是一个主要问题。