-
虽然Django提供了很好的安全防护功能,但正确部署应用程序并利用Web服务器,操作系统和其他组件的安全保护仍然很重要。
-
确保你的Python代码不在Web服务器的根目录下。 这将确保您的Python代码不会意外地作为纯文本(或意外执行)提供。
-
注意任何用户上传的文件。
-
Django不会限制对用户进行身份验证的请求。 为了防止对认证系统的暴力攻击,你可以考虑部署一个Django插件或Web服务器模块来限制这些请求。
-
保持SECRET_KEY的秘密。
-
使用防火墙限制缓存系统和数据库的可访问性是个好主意。
安全问题档案
正如Django的安全策略所述,Django的开发团队坚决致力于负责任地报告和披露与安全相关的问题。
作为这一承诺的一部分,他们保留了一个已经确定和披露的历史问题清单。 有关最新列表,请参阅安全问题的存档。
加密签名
Web应用程序安全的黄金法则是永远不会信任来自不受信任来源的数据。 有时,通过不可信介质传递数据会很有用。 密码签名的值可以通过安全的不受信任的通道传递,因为知道任何篡改都会被检测到。
Django提供了用于签名值的低级API和用于设置和读取签名cookie的高级API,这是登录Web应用程序最常见的用途之一。
您也可能会发现对以下内容有用的签名:
-
生成“恢复我的帐户”URL以发送给失去密码的用户。
-
确保存储在隐藏表单域中的数据没有被篡改。
-
生成一次性秘密URL以允许临时访问受保护资源,例如用户已付费的可下载文件。
保护SECRET_KEY
当您使用startproject创建新的Django项目时,settings.py文件会自动生成并获取随机SECRET_KEY值。 此值是保护签名数据的关键 - 保持此安全性至关重要,或者攻击者可以使用它来生成自己的签名值。
网友评论