use*_*171 5 python django markdown django-templates
我接受Markdown并需要将其转换为HTML以在Django中安全渲染.现在我接受form.cleaned_data并将其转换为HTML:
import markdown
html_body = markdown.markdown(body_markdown, safe_mode=True)
html_body = html_body.replace('[HTML_REMOVED]', '')
return html_body
Run Code Online (Sandbox Code Playgroud)
在模板中,我将其渲染为:
{{ object.content|safe|capfirst }}
Run Code Online (Sandbox Code Playgroud)
但是,如果您发布:
0;url=javascript:alert('hi');" http-equiv="refresh
Run Code Online (Sandbox Code Playgroud)
JS将呈现,因此XSS是可能的.
django 的内置safe模板标记意味着您将该变量标记为可以输出,即您知道它的内容是安全的:
safe:将字符串标记为在输出之前不需要进一步的 HTML 转义。
Django默认转义你的模板变量:
默认情况下,在 Django 中,每个模板都会自动转义每个变量标签的输出。具体来说,这五个字符被转义了......
但它不会为你剥离 JavaScript(它只会使其无法使用),你需要使用模板标签手动执行此操作:
在 django 模板中渲染之前去除 javascript 代码
另一方面,如您所见,safe_modeonmarkdown会去除文本中的所有 HTML 。[HTML REMOVED]
所以移除safe应该足以保证安全,
| 归档时间: |
|
| 查看次数: |
2345 次 |
| 最近记录: |