这次学习的是接口方面的安全问题,对于日常工作比较契合,首先是XSS攻击和接口参数篡改,常见的是在问题提交中加入HTML的代码或者脚本进行操作。抓包和篡改主要是通过抓包工具fiddler对接口参数进行请求拦截和参数篡改。
对于XSS攻击的防御有很多种,这种算是比较容易的。
- 前端对提交的文本内容可以进行过滤以及转义。
- 后端通过拦截器或过滤器对请求参数进行标签转义或直接使用框架提供的API(StringEscapeUtils.escapeHtml4(value))进行过滤。
抓包和篡改的话一般也有几种常用的方法防御:
- 请求参数的加密,通过非对称加密RSA,客户端使用公钥加密,服务端使用私钥解密。
- 请求参数增加签名字段,通过MD5对参数拼接之后在最后加密秘钥进行MD5然后再请求。服务端获取参数后对参数进行加密校验签名。MD5是不可逆的,网上的MD5解密都是属于暴力破解,属于大量收集明文加密后的字符串,然后进行比对破解。所以对于MD5的加密一般复杂一点比较好。
- 对请求接口增加白名单和黑名单,甚至可以对某些短时间频繁请求的IP进行限制等等。