12.1 MVC框架安全
(1)MVC是Model-View-Controller的缩写,它将Web应用分成三层,View层负责用户视图、页面展示等工作;Controller层负责应用的逻辑实现,接收View层传入的用户请求,并转发给对应的Model做处理;Model层则负责实现模型,完成数据的处理。
(2)一些主要的Web安全威胁,如XSS、CSRF、SQL注入、访问控制、认证、URL跳转等不涉及业务逻辑的安全问题,都可以集中放在MVC框架中解决。

12.2模板引擎与XSS防御
(1)在View层,可以解决XSS问题。
(2)在当前流行的MVC框架中,View层最常用的技术是使用模板引擎对页面进行渲染,模板引擎本身可能会提供一些编码方法。

12.3 Web框架与CSRF防御
(1)在Session中绑定token。如果不能保存到服务器端Session中,则可以替换为保存到Cookie里
(2)在form表单中自动填入token字段,在Ajax请求中自动添加token,这可能需要已有的Ajax封装实现的支持。
(3)在服务器端对比POST提交参数的token与Session中绑定的token是否一致,以验证CSRF攻击。
(4)在Spring MVC以及一些其他的流行Web框架中,并没有直接提供针对CSRF的保护,因此这些功能需要自己实现。

12.4 HTTP Header管理
(1)在Web框架中,可以对HTTP头进行全局化的处理,因此一些基于HTTP头的安全方案可以很好地实施。
(2)在框架中实现安全方案的好处就是不用担心会有遗漏。

12.5 数据持久层与SQL注入
(1)使用ORM( Object/ Relation Mapping) 框架对SQL注入是有积极意义的。
(2)在Django中,Django提供的Database API默认已经给将所有输入进行了SQL转义。

12.6 还能想到什么
(1)设计Web框架安全的注意事项
A)先建立威胁模型,然后再判断哪些威胁是可以在框架中得到解决的。
B)保存好安全检查的日志。
C)与时俱进。当新的威胁出现时,应当及时完成对应的防御方案。

12.7 Web框架自身安全
(1)开发框架由于其本身的特殊性,一般网站出于稳定的考虑不会对这个基础设施频繁升级,因此开发框架的漏洞可能不会得到及时的修补,但由此引发的后果却会很严重。