基于网关实现黑白名单(zuul拦截黑名单)和验签、签名的使用(防止篡改数据)

在前后分离的架构中,如vue、ios,调用后台接口需要通过外网来调用,这就存在安全问题,防止恶意请求攻击、ip限流

解决:

采用zuul网关拦截黑名单请求

把不可访问项目接口的ip存入到数据库或redis中,当用户访问后台接口经过zuul网关时,拦截获取用户当前ip,判断ip是否是黑名单,如是黑名单就进行拦截。)


参数验签\签名:

外网API接口参数实现验证签名:解决防止篡改参数,数据还是明文进行传输,就是通过MD5把参数进行加密,并当做参数传入到后台,后台再拿到参数后再次把参数生成MD5和传入的签名进行对比,如果不一致代表数据被篡改。

篡改数据流程:

在提交参数到后台前如请求:add?name=qizhenta&money=200,通过拦截工具拦截请求修改参数为

add?name=qizhenta&money=300。

解决篡改数据:在请求接口前会把参数生成一个签名(使用验签工具类)(签名:就是把参数进行加密,并当做参数一块传入服务器端),服务器端会再次把参数封装成签名再和传入后台的签名进行比对,如果不一致则表示参数被篡改。

流程:

1.请求参数添加签名前:add?name=qizhenta&money=300

2.请求参数添加签名后:add?name=qizhenta&money=300&sign=asd23a1daqwwa33

3.服务器端拿到参数:add?name=qizhenta&money=300&sign=asd23a1daqwwa33

4.服务器端查看是否篡改数据:把(name=qizhenta&money=300)转换成MD5密文后和签名(asd23a1daqwwa33)对比是否相等。


防止篡改数据也可使用RSA直接对参数进行加密,只不过这种方式效率比较低。


MD5: 单项加密  不可逆  可破解(通过加盐解决破解问题)

不可逆:加密以后不可还原成明文(只能通过对明文再次加密后,对比两个密文是否相等)。

你可能感兴趣的:(微服务领域,微服务安全架构)