python - Django 模板过滤器 : HTML Sanitization AND Embedding YouTube, Vimeo 等?

标签 python django django-template-filters

我有一些用户输入的内容(目前在 Markdown 中输入),我想让用户嵌入 YouTube、vimeo 等视频。因此,我需要以某种方式允许特定的 objectparamembed 标记,同时仍然阻止其他标记。

目前我正在使用白名单清理 HTML。我意识到我可以自定义白名单,以便它专门允许指向特定 URL 的对象,但是为所有不同类型的在线服务编写这个似乎是维护的噩梦。

这是我的逻辑。我们有 Markdown,它本质上(大部分)是安全的。除了在 Markdown 中恶意输入的内容之外,Markdown 呈现的实际标签保证是安全的,因此例如,如果我通过 oembed 或视频过滤器运行输出,那些生成的标签将是安全的。因此,如果我能以某种方式知道那些生成的标签 安全的,然后只剥离其他标签,那将解决问题。我只是不确定钩子(Hook)是什么。

我想知道在 Python 中是否已经有一种直接的方法可以做到这一点,或者我是否必须想出一些聪明的技巧。

最佳答案

你应该做的是检查 Markdown 是否安全,看看bleach ,然后通过 Markdown 传递它:

bleached = bleach.clean(user_input, tags=bleach.ALLOWED_TAGS + ['object', 'param', 'embed'], strip=True)
output = markdown(bleached)

此外,django-janior看起来可能会有用。

关于python - Django 模板过滤器 : HTML Sanitization AND Embedding YouTube, Vimeo 等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6832064/

相关文章:

python - 如何加入 wagtail 和 django 站点地图?

javascript - Django 模板标签在 javascript 函数中不会被多次调用

python - Django 不收集静态文件

python - 使用 django 加载静态 css 文件时出现问题

django - 更新模板内变量的值 - django

python - Django 模板如何将数字转换为单词

Python强制unicode转义

Python 和 MySQL : Matching element from list of with a record from database

python - TensorFlow 优化器是否最小化 API 实现的小批量?

python - 如何在 Raspbian Jessie 上安装 Python 3.5