将元素中的脚本标记作为目标并删除

Target script tags within element and remove

本文关键字:目标 删除 元素 脚本      更新时间:2023-09-26

现在我想把我的博客变成一个用户生成的博客,人们可以在这里发布自己的东西。这个问题是它使我的博客容易受到jquery注入的攻击。我搜索了一下,发现有人在谈论白名单和使用服务器端脚本,但由于我的博客由汤博乐托管,我仅限于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 }

您不应该阻塞这个客户端。

如果你使用的是jQuery,你很可能是在一个准备好的函数中运行你的脚本,看起来像这个

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

正因为如此,邪恶的脚本将已经在运行。

用户服务器端消毒,去除人们可以发布的所有有害脚本标签。您也可以使用wysiwyg编辑器,但之后仍然应该清理数据服务器端。

这是唯一可以确定的方法。