密码管理在非必要情况下一般不会重新发明,Django致力于提供一套安全、灵活的工具集来管理用户密码。本文档描述Django存储密码和hash存储方法配置的方式,以及使用hash密码的一些实例。另见即使用户可能会使用强密码,攻击者也可能窃听到他们的连接。使用HTTPS来避免在HTTP连接上发送密码(或者任何敏感的数据),因为否则密码又被嗅探的风险。
这篇文档解释默认配置下Django认证系统的使用。这些配置已经逐步可以满足大部分常见项目对的需要,可以处理范围非常广泛的任务,且具有一套细致的密码和权限实现。对于需要与默认配置不同需求的项目,Django支持扩展和自定义认证。Django的认证同时提供认证和授权,并通常统一称为认证系统,因为这些功能某些地方是耦合的。User对象[User](../../ref/contrib/auth.
Django从开始就带有一个用户认证系统。它处理用户账号、组、权限以及基于cookie的用户会话。本节文档解释默认的实现如何直接使用,以及如何扩展和定制它以适合你项目的需要。概览Django认证系统同时处理认证和授权。简单地讲,认证验证一个用户是它们声称的那个人,授权决定一个认证通过的用户允许做什么。这里的词语认证同时指代这两项任务。
Django 提供了多种工具用于开发Web应用程序
随着 Python 的火热,这款由 Python 编写的Web框架也随之崛起。制作 Wiki 版 Django 文档是为了更好的支持Django 文档协作翻译小组的翻译工作。
概览Django的格式化系统可以在模板中使用当前地区特定的格式,来展示日期、时间和数字。也可以处理表单中输入的本地化。当它被开启时,访问相同内容的两个用户可能会看到以不同方式格式化的日期、时间和数字,这取决于它们的当前地区的格式。格式化系统默认是禁用的。需要在你的设置文件中设置USE_L10N = True来启用它。
概述国际化和本地化的目的就是让一个网站应用能做到根据用户语种和指定格式的不同而提供不同的内容。Django 对文本翻译, 日期、时间和数字的格式化,以及时区提供了完善的支持。实际上,Django做了两件事:由开发者和模板作者指定应用的哪些部分应该翻译,或是根据本地语种和文化进行相应的格式化。根据用户的偏好设置,使用钩子将web应用本地化。
Django 提供了一种健壮的国际化和本地化框架来帮助你实现多种语言和世界区域范围的开发。
web应用安全的黄金法则是,永远不要相信来自不可信来源的数据。有时通过不可信的媒介来传递数据会非常方便。密码签名后的值可以通过不受信任的途径传递,这样是安全的,因为任何篡改都会检测的到。Django提供了用于签名的底层API,以及用于设置和读取被签名cookie的上层API,它们是web应用中最常使用的签名工具之一。
点击劫持中间件和装饰器提供了简捷易用的,对点击劫持的保护。这种攻击在恶意站点诱导用户点击另一个站点的被覆盖元素时出现,另一个站点已经加载到了隐藏的frame或iframe中。点击劫持的示例假设一个在线商店拥有一个页面,已登录的用户可以点击“现在购买”来购买一个商品。用户为了方便,可以选择一直保持商店的登录状态。
Django的开发小组坚定地承诺,为报告和公开安全相关问题负责,这在Django的安全问题中列出。作为承诺的一部分,我们保留了下面的问题的历史列表,这些问题已经被解决和公开。对于每个问题,下面的列表包含日期、简短的描述、CVE 标识符、受影响的版本列表、完整的页面链接以及相应补丁的连接。
这份文档是 Django 的安全功能的概述。 它包括给 Django 驱动的网站一些加固建议。跨站脚本 (XSS) 防护XSS攻击允许用户注入客户端脚本到其他用户的浏览器里。 这通常是通过存储在数据库中的恶意脚本,它将检索并显示给其他用户,或者通过让用户点击一个链接,这将导致攻击者的 JavaScript 被用户的浏览器执行。
安全在Web应用开发中是一项至关重要的话题,Django提供了多种保护手段和机制:
Django的admindocs应用从模型、视图、模板标签以及模板过滤器中,为任何INSTALLED_APPS中的应用获取文档。并且让文档可以在Django admin中使用。在某种程度上,你可以使用admindocs来快为你自己的代码生成文档。这个应用的功能十分有限,然而它主要用于文档模板、模板标签和过滤器。例如,需要参数的模型方法在文档中会有意地忽略,因为它们不能从模板中调用。
简而言之,Django管理后台的基本流程是,“选择一个对象并改变它”。在大多数情况下,这是非常适合的。然而当你一次性要对多个对象做相同的改变,这个流程是非常的单调乏味的。在这些例子中,Django管理后台可以让你实现和注册“操作” —— 仅仅只是一个以已选中对象集合为参数的回调函数。在Django自带的管理页面中都能看到这样的例子。
关注时代Java