Django 安全策略的 7 条总结!

网友投稿 610 2022-09-01

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Django 安全策略的 7 条总结!

SQL/SMTP/OS 注入

基本规则是不要直接使用用户输入的内容。用户在网站界面输入的所有内容均应视作危险内容。如果你将用户输入的用户名字符串直接注入数据库,像这样的语句 select * from auth_user where username=%s,那就很容易被注入漏洞。当然如果使用 Django ,它能在内部进行转义处理,从而降低风险。

最好的方法是实现层级防御。如果给 URL 中的数值限制一个参数,并通过 ID 而不是字符串来选择用户,就预防了许多问题。同样的道理也适用于操作系统交互。用 Django 组件代替你自己的数据存储或邮箱,因为这些组件的安全性较高,如果没有 Django 组件,例如 LDAP 认证,那就应该小心了,因为你只得靠自己。总之,不推荐字符串插入。

认证和会话管理

基本规则:使用 Django 提供的功能。

Django 本身为保证安全做了很多工作,密码均为加密保存,且采用多种算法,随着多个版本的迭代,新版本又有各种新的算法。Django 从1.9版本开始有了密码验证功能,包括长度检查、数字字符和通用字的验证,此外还可以自主增加验证内容。因此使用1.9版本的要记得使用哦。

Django 允许使用密码重置链接,其间服务器不需要储存任何内容。这个链接发送给用户,只能使用一次并且使用一次就可以重置密码。链接中包含用户 ID、时间戳、用户上次登录时间的 HMAC 哈希值,以及其他几项内容。如果想启用这个链接,可以配置 django.core.signing.*。

跨站脚本攻击(XSS)

典型的 XSS 攻击结果为 data="