实施安全方案,要达到好的效果,必须完成两个目标:
1)安全方案争取、可靠;
2)能够发现所有可能存在的安全问题,不出现遗漏。
1、MVC框架安全
MVC:Model-View-Controller 将web应用分为三层,view层负责用户视图、页面展示等;controller负责应用的逻辑实现,接收view传入的用户请求,并转发给对应的model处理;model层负责实现模型,完成数据处理。
一个优秀的安全方案,应该是:在正确的地方,做正确的事情。
SQL注入是model层需要解决的问题。
框架中实施安全方案,比由程序员在业务中修复一个个具体的bug,有着更多的优势。
2、模板引擎与XSS防御
在view层,可以解决XSS问题;跨站脚本攻击之“输入检查”和“输出编码”方法在XSS防御效果上存在差异;从MVC架构而言,更适用“输出编码”
3、web框架与CSRF防御
CSRF攻击可以采用security token解决;对于web框架而言,可以自动在所有涉及POST的代码中添加token。
4、HTTP Headers管理
在web框架中,可以对HTTP头进行全局化的处理,因此一些基于HTTP头的安全方案可以很好的实施。比如针对HTTP返回头的CRLF注入防御、针对30X返回号的HTTP Response实施的钓鱼或诈骗防御、统一设置Cookie函数、HttpOnly功能等。
5、数据持久层与SQL注入
ORM:Object/Relation Mapping 框架
对抗SQL注入的最佳方式:预编译绑定变量,但当代码量巨大时,难以把SQL注入的地方不遗漏的找出来,而ORM框架提供了一个便捷的途径。
6、其他能在框架中实现的安全方案
文件上传、基于URL的访问控制、加密方法、证书支持、OpenID支持、安全日志保存等。
设计整体安全方案时,先建立威胁模型,然后判断哪些威胁是可以在框架中得到解决的。
7、web框架自身安全
Struts 2命令执行漏洞,相应补丁未能完全解决,反映struts2的开发者本身对安全的理解不到位;
Spring MVC命令执行漏洞
Django命令执行漏洞