安全篇
sql注入:不要信任用户输入,正则校验($ -> #传递参数),限制长度,对单引号和双-进行转换等; 不要动态拼装sql;不使用管理员权限连接数据库;敏感信息加密存放。 (测试扫描工具burpsuite)
DOS攻击:使用WSF的访问控制能力,控制接口调用频次,是否有耗费大量资源的请求,限制并发数。 (利用tcp[三次握手]协议缺陷,发送大量半连接[收到SYN包未收到ACK包]请求,耗费cpu和内存资源)
XSS注入[跨站脚本攻击]:默认禁止使用trustAs和getTrusted系列方法,默认禁止业务代码进行dom,js,css的拼接操作,参考安全SDK防范进行输出编码,用户输入限制
命令注入;脚本注入等,均需要对输入格式,字符规范等做限制,如xml转义符尖括号,单双引号,逗号等。
横向越权:用户可访问无权限数据,如跨项目访问。
众向越权:同一个接口被多个服务调用时会存在众向越权,建议使用不同接口。
文件上传下载:绝对路径不能暴露,临时文件要清理,文件大小,类型[后缀]要校验,文件路径归一化。
日志记录:记录用户操作日志及关键信息。logger中参数不能为e,建议使用e.printStackTrace代替e.toString和e.getMessage
敏感数据:严禁硬编码、明文存储,日志禁止打印口令,私钥,密钥等,关键信息如密码的加密处理等。
权限最小化原则。
外部输入校验白名单,确保数据合法性。
资源释放,如io
CSRF攻击,非get类请求默认启用CSRF防护,get类请求是否涉及敏感数据的传输或者关键操作,接口请求类型要规范。防御措施:验证http referer字段,在请求地址中添加token并验证,在http头中自定义属性并验证。
其他安全问题:异常行为,线程同步,序列化与反序列化,平台安全,加密算法,伪随机数等。