针对高级程序员的前言

Flask 中的本地线程对象

Flask 的设计原则之一是简单的任务不应当使用很多代码,应当可以简单地完成,但同时又不应当把程序员限制得太死。因此,一些 Flask 的设计思路可能会让某些人觉得吃惊,或者不可思议。例如, Flask 内部使用本地线程对象,这样就不必在同一个请求中因为线程安全的原因,而函数之间传递对象。这种实现方法是非常便利的,但是当用于依赖注入或者当尝试重用使用了与请求挂钩的值的代码时,需要一个合法的环境。 Flask 项目对于本地线程是直言不讳的,没有一点隐藏的意思,并且在使用本地线程时在代码中进行了标注和说明。

做网络开发时要谨慎

做网络应用开发时,安全要永记在心。

如果你开发了一个网络应用,那么可能会让用户注册并把他们的数据保存在服务器上。用户把数据托付给了你。哪怕你的应用只是给自己用的,你也会希望数据完好无损。

不幸的是,网络应用的安全性是千疮百孔的,可以攻击的方法太多了。 Flask 可以防御现代 Web 应用最常见的安全攻击:跨站代码攻击( XSS )。 Flask 和 下层的 Jinja2模板引擎会保护你免受这种攻击,除非故意把不安全的 HTML 代码放进来。但是安全攻击的方法依然还有很多。

这里警示你:在 Web 开发过程中要时刻注意安全问题。一些安全问题远比想象的要复杂得多。我们有时会低估程序的弱点,直到被一个聪明人利用这个弱点来攻击我们的程序。不要以为你的应用不重要,还不足以别人来攻击。没准是自动化机器人用垃圾邮件或恶意软件链接等东西来填满你宝贵的数据库。

Flask 与其他框架相同,你在开发时必须小心谨慎。