abo*_*nov 29 python forms django sanitization
是否有一个通用的"表单清理程序",我可以用来确保从提交的表单中删除所有的html /脚本?form.clean()似乎没有做任何事情 - html标签仍然在cleaning_data中.或者实际上手动执行此操作(并覆盖表单的clean()方法)是我唯一的选择?
sim*_*mao 47
strip_tags实际上从输入中删除了标记,这可能不是您想要的.
要将字符串转换为带有尖括号,&符号和引号转换为相应HTML实体的"安全字符串",可以使用转义过滤器:
from django.utils.html import escape
message = escape(form.cleaned_data['message'])
Run Code Online (Sandbox Code Playgroud)
Ber*_*ant 29
Django附带了一个名为striptags的模板过滤器,您可以在模板中使用它:
value|striptags
Run Code Online (Sandbox Code Playgroud)
它使用了strip_tags生活中的功能django.utils.html.您也可以利用它来清理表单数据:
from django.utils.html import strip_tags
message = strip_tags(form.cleaned_data['message'])
Run Code Online (Sandbox Code Playgroud)
Wto*_*wer 20
或者,有一个名为bleach的Python库:
Bleach是一个基于白名单的HTML清理和文本链接库.它旨在通过一些 HTML 获取不受信任的用户输入.
因为Bleach使用
html5lib与浏览器相同的方式解析文档片段,所以它对未知攻击具有极强的抵抗力,远远超过基于常规表达式的清洁剂.
例:
import bleach
message = bleach.clean(form.cleaned_data['message'],
tags=ALLOWED_TAGS,
attributes=ALLOWED_ATTRIBUTES,
styles=ALLOWED_STYLES,
strip=False, strip_comments=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18967 次 |
| 最近记录: |