我是Django的新手,在Django应用程序中,我有一个模型,其中包含有关车辆的基本信息(名称,型号,品牌,年份)。我通过表格添加信息。问题是,如果用户要输入“ alert(“ error”)“,则表单将允许它并将其保存为有效输入。因此,当页面刷新时,页面上将出现警报,并且该字段现在为空白。如何防止用户在CharField中输入JavaScript?
我在代码库的任何地方都没有“自动转义”功能,也没有在html中使用“ safe”关键字。我没有“ def clean”检查此类输入,因为我印象中Django将负责此类注入。预先感谢!
答案 0 :(得分:1)
这是完全有效的输入。但这不会导致页面上出现警报-因为Django自动转义 output 。
答案 1 :(得分:0)
这可以使用strip_tags()函数解决
尝试
from django.utils.html import strip_tags
string_value = "<b>Iam </b> <button>Nancy</button> moree. <span>Thanks</span>"
sanitize_value = strip_tags(string_value)
print(sanitize_value)
注意:
如果您使用的是strip_tags()
,则应将Django至少更新为Django 1.6和1.7及更高版本。这是
因为安全专家找到了一种方法来绕过低于1.6版的Django版本中的strip_tags。参见
解决方案2:
如果您使用的是Django模板, 您还可以在您的视图中尝试使用此剥离标签模板filter()
{{ value|striptags }}
如果值为"<b>Iam </b> <button>Nancy</button> moree. <span>Thanks</span>"
输出为“ 我是Nancy Moree。谢谢”。
解决方案3:
您还可以通过clean()方法使用python漂白库 source