安全性问题
- DDOS攻击 利用软件开发设计漏洞,进行低成本的攻击消耗服务器CPU,内存资源,例如哈希碰撞攻击,加密,解密,图形处理等计算密集型应用
不能靠用户合理使用解决安全问题 - 文件上传攻击,文件类型
大文件上传,病毒上传,拖垮服务器资源.用户是不可信的.文件上传次数限制. - SQL注入
渗透测试工具 sqlmap - CSRF 漏洞
WEB开发中的问题,Spring Security有解决方案 - XSS 漏洞
- XML解析外部实体注入攻击
利用了XML 外部实体引用的特性获取服务器上的资源信息 - zip解压缩炸弹 Zip bomb
看似一个很小的zip压缩文件,实际解压出来可能有数PB的大小 - 缓冲区溢出漏洞,JNI调用C/C++溢出
- 资源读取与释放,文件句柄,数据库连接,锁
有借有还,再借不难 - 敏感信息不应该明文存储,用户名/密码,身份证.安区级别高的话,明文处理后立即在内存中就清除
制定安全策略 - 敏感信息暴露在Exception中,Exception的message信息尽量少,必要信息通过日志记录
- MITM
中间人攻击,数据劫持,篡改
安全防范措施
代码开发中知晓全部安全问题,不太现实.所以需要引入工程化的安全防范措施.
-
建立安全测试工具
-
code review,代码规约
大多数安全问题,都可以在开发,测试阶段发现.重要的是要有检测措施,安全条例 -
静态代码分析工具,FindBugs,PMD
现代的代码分析工具也可以检测出很多问题 -
跟进JDK安全更新
-
追踪网络安全事故