给经验丰富的程序员的前言

Flask 中的本地线程

Flask 其中的一条设计原则就是简单的任务保持简单;任务的实现不需要花费太多的代码也不会限制到你。 因此,Flask 的一些设计决定可能会让一些人感到很惊讶或者非正统。例如,Flask 内部使用了本地线程对象,这样在一个请求中不必在函数之间传递对象以保证线程安全。 这种方式是十分方便,但是为依赖注入或者尝试重用与请求挂钩的值的代码,需要一个有效的请求上下文。 Flask 项目对本地线程很公开的,并不会去隐藏它们,在使用到它们的代码和文档里面都会指出。

小心翼翼地进行 Web 开发

在构建 Web 应用程序时,始终考虑到安全性。

如果你编写了一个 Web 应用,你很可能允许用户在你的服务器上注册并留下数据。即使这是唯一的用户,也可能会在应用中留下数据。用户们把数据托付给你,你当然更希望这些数据被安全地保存。

不幸的是,有很多方法可以使得一个 Web 应用程序的安全性受到损害。 Flask 能够让你免受现代 Web 应用常见的一个安全问题的困扰:跨站脚本攻击(XSS)。 如果你不是刻意地把不安全的 HTML 标记成安全的,Flask 以及底层的 Jinja2 模版引擎会守护着你。 但目前还存在着更多的方法来引起安全问题。

本文档会在 web 开发中那些需要注意安全的方面提醒你。这些安全考虑中的某些远比人们想象的复杂,我们有时候低估漏洞被利用的可能性——直到一个聪明的攻击者找出利用应用的方法。并且,不要想着你的应用没有重要到可以吸引攻击者。取决于攻击的类 型,有时候是自动化的僵尸机器搜寻在你数据库中填充垃圾、恶意程序链接等的方法。

开发者必须在为需求编写代码时留心安全隐患,在这点上,Flask 与其它框架没有区别。

Python 3 的状况

Flask,它的依赖,以及大部分 Flask 扩展都已经支持 Python 3 。如果你在 Python 3 上使用 Flask,请看看 python3-support

请继续阅读 安装 或者 快速入门