在元素中定位脚本标记并删除

时间:2013-08-03 23:26:10

标签: javascript jquery find code-injection

现在我正在考虑将我的博客变成一个用户生成的博客,人们可以发布他们自己的东西。 这个问题是它使我的博客容易受到jquery注入。我搜索并发现人们谈论白名单和使用服务器端脚本,但由于我的博客由Tumblr托管,我只限于CSS,HTML和jQuery,我不确定这是否是一个解决方案。

现在这是其他用户可以更改/定位的唯一部分:

<h2><a href="Link" class="Title">
    <p>//THIS IS WHERE THE USER GENERATED CONTENT GOES</p>
</a></h2>

问题的一个例子是,如果他们决定这样做:

<h2><a href="Link" class="Title">
        <p><script>alert('injected');<script></p>
</a></h2>

现在,无论如何都要阻止上面的脚本关闭?因为我只限于jQuery,所以我想到的解决方案如下:

       var ContentWithScript = Anything inside <p></p> tags (or any other way to target it)
       $(ContentWithScript).find('script').remove();

或者

$(.Title).getElementsByTagName('p')
     var Content=(this)
     if Content contains string ('script) {
           remove }

1 个答案:

答案 0 :(得分:0)

你不应该阻止这个客户端。

如果你正在使用jQuery,你很可能在一个就绪函数中运行你的脚本,看起来像这样

$(function(){ /* some code */ });

因此,邪恶的脚本已经在运行。

用户服务器端清理以删除人们能够发布的所有有害脚本标记。你也可以使用所见即所得的编辑器,但你仍然应该在之后清理数据服务器端。

这是确定的唯一方法。