应该在输入时对html进行消毒吗?

时间:2016-02-17 00:58:37

标签: python html django html-sanitizing input-sanitization

这个问题已经在这里被问了很多次,并且大多数人都同意原始HTML输入应该存储在数据库中,并在输出时进行转义。但是,我认为我的情况可能略有不同。

用户可以输入一些标签(em,strong,span等),但其他标签被删除(脚本,样式,元等) 所以我正在做的是采用原始HTML,并通过bleach.clean发送它来剥离(不逃避)所有不安全的标签。对我来说,这感觉更像是验证/消毒而不是用于显示的内容。特别是因为无论我以什么格式提供数据(HTML,JSON或任何其他格式),我都会剥离不安全的标签。

我是否还应该在输出时对其进行消毒,还是这种情况下最好在输入时进行消毒?

奖金问题:

如果这是适合这种情况的方法,那么在django中实现它的最佳方法是什么?表单级验证或模型级验证?

1 个答案:

答案 0 :(得分:1)

在消毒方面,没有太多的东西。您应该始终清理所有用户输入,然后将它们插入到数据库中以清理HTML本身以及防止任何SQL注入攻击。当从数据库进入网页并将其放入网页时,运行额外的检查并清理输出并没有什么坏处。