OWASP TOP 10 - 2013
众所周知,OWASP(开放式web应用程序安全项目)关注Web应用程序的安全。OWASP项目最具权威的就是其”十大安全隐患列表”。这个列表不但总结了Web应用程序最可能、最常见、最危险的十大安全隐患,帮助IT公司和开发团队来规范应用程序开发流程和测试流程,提高Web产品的安全性。
- 注入
- 身份认证与会话管理
- XSS(跨站脚本)
- 不安全的对象引用
- 安全配置错误
- 敏感信息泄露
- 功能级访问控制缺失
- CSRF(跨站请求伪造)
- 使用含有已知漏洞的组件
- 未验证的重定向和转发
安全设计十大原则
CISSP ( Certified Information Systems Security Professional ) 相关资料统计:通过合适的十大设计原则可以避免90%的问题。
1.简单易懂
2.最小特权
3.故障安全化
4.保护最薄弱环节
5.提供纵深防御
6.分隔
7.总体调节
8.默认不信任
直接对象引用、缺乏访问控制的URL等问题都是由于默认信任导致的。
勉强相信您自己的服务器,以防止数据窃取
9.保护隐私
10.公开设计,不要假设隐藏秘密就是安全
安全编码十大原则
保持简单
简单易读而且有效地解决问题的代码。控制代码复杂度
验证输入
验证所有的从不信任的数据源来的输入,包括命令行、网络接口、环境变量、用户控制的文件,不仅要验证类型,也要验证参数的长度和合法值范围。
使用白名单而不是黑名单。
所有客户端验证过的参数,在服务器端要再验证一遍注意编译器告警
编译时,用最高的告警级别,并且去除所有的告警。
使用良好的编程习惯避免这些错误的发生。
使用辅助工具贯彻落实编码规范框架和设计要符合安全策略
安全策略、安全基线
例如对密码的强度要求:长度必须大于或等于8个字符;必须包含大小写字母、数字和特殊字符;不能使用包含用户名的密码,等等。
MVC框架
如果一个良好的安全策略在设计产品的框架和具体细节时可以得到执行,就可以在源头上避免很多容易出现的错误。默认拒绝
默认是好人,是无罪的,如果需要认定有罪,就必须拿出证据来。
- 坚持最小权限原则
每一个进程应该使用可以完成某个任务的最小权限运行。任何需要提权的操作,应尽可能地保持最短的时间,一旦任务完成,应该立即回收权限,这样可减少攻击者在高权限的条件下执行恶意代码。
以root运行服务器,一旦web服务器出现问题,攻击者可以root用户的名义运行一切程序或命令。
在运行数据库时,使用管理权限(例如:创建表、修改表等),在存在SQL注入问题时,问题影响会更广、程度更高。
在初始安装时避免给出过多权限- 修改默认密码
净化发送到其他系统的数据
在CWE排名前25的漏洞中,CWE-89、78、79、434、352、601,是和组件之间的不安全通信相关的,包括组件之间、模块之间、进程之间、线程之间以及系统之间的通信。像SQL注入、OS命令注入就是应用程序在没有将输入的数据无害化处理就发给数据库和其他组件处理导致的。
深度预防
一层防御是不够的,多一层防御可以使一个安全缺陷不可以利用或者减轻被利用的危害。
客户端验证、服务端验证
客户端隐藏接口或将菜单灰掉,可以被逆向工程或工具绕过限制。
组件之间通信,发送者需要净化处理,接受者需要再次验证。
使用有效的质量保证技术
单元测试、测试覆盖率
异常数据测试、Fuzz测试
自动化代码扫描工具、自动化漏洞扫描工具
人工代码审查采用一个安全编码规范
专门针对安全的编码规范;
不使用过时的和不安全的函数
不使用不安全的随机产生函数,如random等。
不使用不安全的加密算法,如MD5、SHA1、RC4等
从源头上避免安全问题的引入,做到安全缺陷预防。
安全编码规范对新人的作用。