-
Django 官方文档学习笔记二
-
Django 用户认证 Auth
- 安装
- setting
- 'django.contrib.auth' 包含了验证框架的内核和它的默认模型。
- 'django.contrib.contenttypes' 是 Django content type system ,允许你创建的模型和权限相关联
- Middleware
-
Django中的密码管理
- 格式 <algorithm>$<iterations>$<salt>$<hash> 默认情况下,Django 使用带有 SHA256 哈希的 PBKDF2 算法
- Django 通过查阅 PASSWORD_HASHERS 的设置来选择算法
- 增加工作因子,迭代次数
- 密码升级
- 登录时自动升级不安全的加密密码
- 当用户登录时,如果用户的密码使用首选算法以外的算法保存,Django 会自动升级这个算法成为首选算法。这意味着旧的 Django 安装会在用户登录时自动得到更多的安全,并且当它们创建时你可以切换到新的更好的存储算法。
- 无需登录的密码升级
- 密码验证
-
Django 缓存框架
- 视图缓存
- 装饰器 django.views.decorators.cache 定义了一个 cache_page 装饰器,它将自动缓存视图的响应:
- 在URLconf 中指定缓存视图
- 使用Vary 标头
- 可变”标头定义了缓存机制在构建其缓存密钥时应考虑哪些请求报头。例如,如果网页的内容取决于用户的语言偏好,则该页面被称为“在语言上有所不同”
-
条件视图处理
- 然后 Django 可以使用函数为视图控制提供 "提前判断" 选
- condition(etag_func=None, last_modified_func=None)
- 函数传递 last_modified_func 应该返回一个标准时间的时间值,指定资源最后修改的时间,如果资源不存在,返回 None 。
- 函数传递到 etag 装饰器应该返回表示资源的 ETag 字符串,如果不存在则返回 None 。
-
加密签名
- 场景
- 生成“恢复我的帐户” URL,以发送给丢失密码的用户。
- 确保存储在隐藏表单字段中的数据未被篡改。
- 生成一次性秘密URL,以允许临时访问受保护的资源,例如用户付费购买的可下载文件
- 保护Secret_key
- 该 settings.py文件会自动生成并获得一个随机SECRET_KEY值。此值是保护签名数据的关键-保持此安全性至关重要
- 使用默认的key
- jango的签名方法存在于django.core.signing模块中。要签名一个值,首先实例化一个Signer实例:
- 使用自己构造的 secret_key
- Signer(key = None,sep =':',salt = None,algorithm = None)
- 返回key用于生成签名和sep分隔值的签名者。sep不能在URL安全的base64字母。该字母包含字母数字字符,连字符和下划线。algorithm必须是所支持的算法 hashlib,默认为'sha256'。
- 使用salt
- 验证时间戳,过期时间
- TimestampSigner 是 Signer 的子类
- TimestampSigner(key = None,sep =':',salt = None,algorithm ='sha256')
- 保护复杂的数据结构
- 如果您希望保护列表,元组或字典,则可以使用签名模块dumps和loads功能来实, 在后台使用JSON序列化。JSON可确保即使您SECRET_KEY被盗,攻击者也无法通过利用pickle格式执行任意命令:
-
发送电子邮件
- 防止头注入过滤掉换行符
- Paginator
-
Django 中的安全性
- 跨站脚本(XSS)保护
- XSS攻击使用户可以将客户端脚本注入其他用户的浏览器中
- 是通过将恶意脚本存储在数据库中来进行检索并将其显示给其他用户,或者通过使用户单击链接来使攻击者的JavaScript由用户的浏览器执行来实现的。
- jango模板会转义特定字符, 这对于HTML来说尤其危险
- 跨站请求伪造(CSRF)保护
- SRF攻击允许恶意用户使用另一用户的凭据执行操作,而无需该用户的知识或同意。
- Django具有针对大多数CSRF攻击的内置保护,只要您在适当的地方启用和使用它即可。但是,与任何缓解技术一样,存在局限性
- HTTPS一起部署时, CsrfViewMiddleware将检查HTTP引用标头是否设置为相同来源(包括子域和端口)上的URL
- csrf_exempt除非绝对必要,否则请务必小心用装饰器标记视图
- SQL 注入
- SQL注入是一种攻击,恶意用户能够在数据库上执行任意SQL代码。这可能导致记录被删除或数据泄漏
- 由于Django的查询集是使用查询参数化构造的,因此可以防止SQL注入
- 因此底层数据库驱动程序会对其进行转义
- jango还使开发人员可以编写原始查询或执行自定义sql。这些功能应谨慎使用,并且您应始终谨慎地正确转义用户可以控制的任何参数。
点击劫持保护
SSL
主机头验证
Referer标头
会话安全
用户上传的内容
- 如果您的站点接受文件上载,则强烈建议您将Web服务器配置中的这些上载限制为合理的大小,以防止拒绝服务(DOS)攻击
其他安全主题
- 确保您的Python代码在Web服务器根目录之外。这将确保您的Python代码不会意外用作纯文本(或意外执行)。
- 注意任何用户上传的文件。
- Django不会限制对用户进行身份验证的请求。为了防止对身份验证系统的暴力攻击,您可以考虑部署Django插件或Web服务器模块来限制这些请求。
- 保守SECRET_KEY秘密
- 最好使用防火墙限制缓存系统和数据库的可访问性。
- 查看开放式Web应用程序安全项目(OWASP)的前10个列表,该列表确定了Web应用程序中的一些常见漏洞。尽管Django拥有解决某些问题的工具,但在项目设计中必须考虑其他问题。
- Mozilla讨论了有关Web安全的各种主题。他们的页面还包含适用于任何系统的安全性原则。
-
序列化Django 对象
-
序列化数据
-
将数据直接序列化到类似文件的对象
-
序列化部分字段
-
继承模型
反序列化
序列化格式
-
Django 设置
使用设置
-
相关阅读:
EMF介绍系列(一、EMF与MDA)
EMF介绍系列(四、枚举类型、自定义类型和Map)
使用osgi.util.NLS简化资源文件访问
2012 定制化产品探讨(周金根).pdf
敏捷个人理念与模型PPT及今年唯一一次的公开线上课堂
生活:父与子三亚行
与北邮学子交流成长,敏捷个人总体介绍 PPT
敏捷个人教你如何制作2012生活看板
敏捷个人架构图 V1.3
敏捷个人微刊封面及敏捷个人使命和加入社区方式
-
原文地址:https://www.cnblogs.com/nancyfeng/p/13576505.html
Copyright © 2020-2023
润新知