python - 如何在 Google App Engine 中清理 python 中的 html blob 上传?

标签 python google-app-engine sanitization

如果将 HTML 上传到 Google App Engine 并打算将其提供给 iframe,那么对其进行清理的最佳方法是什么(例如删除脚本和其他恶意 html)?

我在想

        reader = blobstore.BlobReader(binfo.key())
        value = reader.read()
        newHtml = lxml.html.clean.Cleaner().clean_html (value)
        #save newHtml as the blob in google cloud store to be served.

我想知道是否有更好的方法来做到这一点,非常感谢任何帮助。

注意:如果有一种方法可以删除 anchor 或使 anchor (或源)成为非相对且安全的http等(或完全不允许),那就太好了。

最佳答案

这可能是一个很难解决的问题,因为 HTML 可以通过多种方式注入(inject)恶意内容。 script 元素可能是最知名/最常见的,但是 forminputimg 元素也可以被虐待。恶意 JS 还可以通过事件处理程序包含在几乎任何元素中。 More information about XSS from OWASP ,帮助您入门。

由于您使用的是 Python,因此这里有一些用于清理 HTML 的库,您可以尝试一下。

就其值(value)而言,在 iframe 中托管用户提供的 HTML 是防止恶意内容访问您托管的应用的一种方法(尽管您可能需要采取措施来防止 >iframe 突破),但您可能希望向用户明确表示托管的内容并不总是可信。

希望这有帮助!

关于python - 如何在 Google App Engine 中清理 python 中的 html blob 上传?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48043845/

相关文章:

python - 如何在 Flask 服务器中将 python JSON 转换为 html 表?

google-app-engine - 如何从 GQL 中的键值检索实体

cakephp - 何时在 CakePHP 中进行清理

php - PHP filter_var FILTER_VALIDATE_DOMAIN期望参数2长

python - redis 锁定 : redispy vs python-redis-lock

python - Django:无法分配 "<Profile: Profile object (None)>": "Profile.user"必须是 "User"实例

python - 在没有符号链接(symbolic link)的情况下跨服务重用数据存储模型

javascript - HTML5 的 contenteditable 属性应该是 XSS 安全的吗?

python - 用于提取括号和逗号中数据的正则表达式

python - GAE中的后台进程