2

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

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

我是否仍然应该在输出时对其进行消毒,或者在这种情况下最好在输入时进行处理?

奖金问题:

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

4

1 回答 1

1

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

于 2016-02-17T03:42:25.617 回答