如果将 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
元素可能是最知名/最常见的,但是 form
、input
和 img
元素也可以被虐待。恶意 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/