给有经验程序员的前言
Flask 中的线程局部变量
Flask 的设计抉择之一就是让简单的任务保持简单;它们的实现不应采用大量的代码, 并且不应对你做出限制。为此,我们选择了一些可能让某些人觉得惊讶或异端的设 计。例如,Flask 内部使用线程局部的对象,这样你不必在请求内的函数间传递对象来 保证线程安全。这个方法很方便,但为了实现依赖注入,或尝试重用含有与请求挂钩的 值的代码之时,需要一个有效的请求环境(Request Context)。
Web 开发危机四伏
快乐码 Web,安全记心间。
你相当可能编写允许用户在你的服务器上注册并留下数据的 Web 应用。即便你是这唯 一的用户,也会在应用中留下数据。用户们把数据托付给你,你当然更希望这些数据 被妥善安全地保存。
不幸的是,攻陷 Web 应用的手段五花八门。Flask 可保护你免受一个在现代 Web 应用 中最常见的安全问题的困扰:跨站脚本攻击(XSS)。Flask 和底层的 Jinja2 模板引 擎已经为你应付得足够好,除非你蓄意把不安全的 HTML 标记为安全。但仍有很多导致 安全问题的可能。
本文档会在 Web 开发中那些需要注意安全的方面警示你。一些安全上的顾虑远比人们 想象的复杂,我们所有人都会有低估漏洞被利用的可能性的时候——直到一个精明的 攻击者找出利用我们程序的方法。而且,不要侥幸认为你的应用没有重要到足够吸引 攻击者。取决于攻击的类型,有时候会是自动化的僵尸机器来检测如何在你数据库中 填充垃圾内容、恶意程序链接或之类东西。
开发者必须在为需求编写代码时留心安全隐患,在这点上,Flask 与其它框架没有区 别。
Python 3 的状态
Python 社区目前处于改善库对 Python 新版本支持的进程中。而当前大力改进中的 处境仍有一些问题,使得用户难以迁移到 Python 3 。这些问题一部分是因为长时间 没有回顾语言中的变化,一部分也是因为我们没有找出低层 API 应该如何做出修改 来适应 Python 3 中 Unicode 的变化。
我们强烈建议在开发时使用 Python 2.6 和 2.7 ,并激活 Python 3 警告。如果你 计划在近期升级到 Python 3 ,我们强烈推荐你阅读 如何编写向后兼容的 Python 代码 。