有没有用于清理HTML和移除所有Javascript的开源Python库?

4 投票
5 回答
1966 浏览
提问于 2025-04-15 16:43

我想写一个网页应用,让用户可以输入任何可以放在<div>标签里的HTML代码。这些HTML代码会展示给其他用户,所以我想确保这个网站不会让用户受到XSS攻击。

有没有什么好的Python库,可以把HTML或者DOM树中的事件处理属性、<script>标签和其他的JavaScript杂七杂八的东西清理掉?

我打算用Beautiful Soup来整理HTML,确保里面没有未闭合的标签之类的问题。但是,按照我所了解的,它似乎没有现成的方法来去掉所有的JavaScript。

如果其他语言有好的库也可以,但我还是更喜欢用Python。

我在谷歌上搜索了很多,也在pypi上找过,但没找到什么明显的解决方案。

相关链接

5 个回答

0

你可以使用BeautifulSoup这个工具。它可以让你很方便地浏览网页的结构,即使网页的格式不是很好也没关系。我不太确定有没有专门只处理脚本标签的工具。

5

正如Klaus提到的,大家在这个社区里达成了一个共识,就是在处理这些任务时,应该使用BeautifulSoup这个工具:

soup = BeautifulSoup.BeautifulSoup(html)
for script_elt in soup.findAll('script'):
    script_elt.extract()
html = str(soup)
4

使用白名单的方法来允许特定的标签、属性和它们的值,是唯一可靠的方式。你可以看看这个链接:Recipe 496942: Cross-site scripting (XSS) defense

那么,现有的标记语言,比如这个网站上使用的,有什么问题呢?

撰写回答