【问题标题】:Should html be sanitized on input?应该在输入时对 html 进行清理吗?
【发布时间】:2016-05-28 12:37:18
【问题描述】:

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

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

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

额外问题:

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

【问题讨论】:

  • 坚持大多数人都同意的。 :)

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


【解决方案1】:

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

【讨论】:

  • 这是我的想法。尽管 Django 已经在处理 SQL 注入,但我认为清理原始数据仍然是有意义的。感谢您的建议!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-10
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 2015-01-16
  • 2010-09-15
  • 2011-01-03
相关资源
最近更新 更多