2010最危险的25个编程错误之思考

       早上上班先扫了一眼csdn,其中新闻“2010最危险的编程错误”挺吸引我,于是深度之,感触颇深。

一、2010最危险的编程错误条目

       1. 跨站点脚本攻击(4)

       2. SQL注入(3)

       3. 经典缓冲区溢出(1)

       4. 跨站点请求伪造(7)

       5. 不正确的访问控制(授权)

       6. 在安全决策中依赖不可信的输入

       7. 不正确地将路径名限制为受限路径

       8. 上传危险类型的文件不受限

       9. 操作系统命令中特殊因素的处理不正确(操作系统命令注入)(5)

       10. 敏感信息未加密(6)

       11. 使用硬编码凭据(21)

       12. 以不正确的长度值访问缓冲区

       13. PHP程序中Include/Require语句文件名控制不正确(PHP文件侵入)

       14. 数组下标验证不正确

       15. 异常条件检查不正确

       16. 错误消息泄露信息(9)

       17. 整数溢出

       18. 缓冲区大小计算错误

       19. 关键函数缺乏身份验证

       20. 下载未经完整性检查的代码(15)

       21. 对关键资源的错误权限分配(22)

       22. 资源分配没有限制

       23. URL重导向到不受信的资源

       24. 使用被破解或有风险的加密算法(20)

       25. 存在竞争情况(Race condition)(8)

       其中后加括号有数字的,是该项错误去年的排名。显然,连续两年都入选的错误,千万不要再犯了。

二、25条编程错误之思考

       1、高安全性web程序越来越难写

       虽然现在编程语言越来越多、越来越先进、上手越来越容易,甚至完全利用拖拉、配置都可以完成程序编写,但是程序安全风险却越来越高,而且越来越隐蔽。这个,我们细想下也好理解,因为安全风险是可继承并且可放大的。比如说,优秀的html编辑器fckeditor,其有文件上传的漏洞,则只要你的web站点使用了fckeditor就有文件上传的漏洞,而此漏洞是极其隐蔽的。因此,对于对公的有数据交互的web开发,提高其安全性欲来欲困难,写程序的难度也越来越大,不是以前的数据通过web页面可提交保存到数据库并且能查询出来即可。

       2、必须有一套强壮权限控制系统

       现在做web系统,一定要有强壮的权限控制机制,不仅要控制url,更要控制函数、数据等资源。如表格所示的几条都是由于权限没控制好导致,因此要做一个web系统,其权限控制一定要强壮而且灵活。

5. 不正确的访问控制(授权)

22. 资源分配没有限制

21. 对关键资源的错误权限分配(22)

19. 关键函数缺乏身份验证

       3、须有统一的错误处理机制

       由于很多错误、异常都是不可预料的,因此即使程序员做了很多错误处理,测试的时候也都是被程序本身捕捉到了,但是用户使用的时候却不断地抛出其它的错误、异常,而且往往会暴露关键信息。诸如:jsp容器是tomcattomcat版本号是多少,数据库是oracletable名称是什么,操作了table的哪些field等。因此,web开发必须进行统一的错误处理,程序员未自行处理的错误、异常,开发平台一定须处理掉。

       4、关键性的数据录入、条件必须在服务端校验

       数据校验很多开发人员都会考虑到而且也会处理,比如:*必须录入,长度要满足多少,类型必须是什么等等,但是大部分只是在前端js处理了下,就传给服务器端,服务器端直接提交了。跨站点脚本攻击、sql注入、跨站点请求伪造、在安全决策中依赖不可信的输入等如在服务器端校验,则可有效避免。

       5、敏感信息一定要加密

       敏感信息不仅在传输途中要加密,而且存储在数据库中也应加密,如登录口令等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值