Django表单如何对文本输入进行清理以防止SQL注入、XSS等攻击?

16

我在Django的表单代码中没有看到任何关于处理原始文本的表单输入消毒。Django如何确保用户输入在进入数据库时被消毒?它是否会这样做以防止SQL注入等问题?


1
如果您担心输入中的HTML/脚本,那么这个问题已经有了答案... 如果您只是担心SQL注入,请参见@Andrew Gorcester在下面的回答。https://dev59.com/Sm035IYBdhLWcg3wErzM - renab
1
我们刚刚在这个问题上讨论了类似的事情:https://dev59.com/fGvXa4cB1Zd3GeqPGzeR#13539906 -- 答案是 bleach - Williams
1个回答

27

数据库驱动程序会自动对用户输入进行清理。

只有在尝试组装包含SQL命令和数据的单个字符串时,才需要显式地清理用户输入。Python DBAPI 的正确使用完全分离了命令和数据,只要您正确地使用该功能,作为程序员,您就不必担心 SQL 注入问题。Django 默认使用该功能,因此您不必担心它。

编辑:XSS 是另一个问题,请参见 @renab 的评论以及 https://docs.djangoproject.com/en/dev/topics/security/#cross-site-scripting-xss-protection


2
但是如何处理GET请求数据呢?例如,input元素的value属性输出用户的搜索查询,从而导致反射型XSS。 - Jarad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接