常见安全问题
远程命令注入:
在lib中插入特定代码,调用lib时会执行代码,主要用于cs系统,例如绕过激活功能
路径遍历:
利用web服务文件交换功能,直接获取文件
例如:http://www.xxx.com/getfile=image.jgp
防御:过滤特殊字符(../)、目录权限控制
sql注入:
例如输入name="abc" or 1=1绕过认证,
防御:mybatis使用#,过滤用户输入敏感字(or、引号等)
CRLF攻击:
利用CRLF字符(%0d%0a)拆分http请求响应
fastjson反序列化漏洞:
利用反射原理,在字符串中插入自定义构造函数,反序列化时自定义函数会被执行
XXS跨站脚本攻击:
通过修改js文件,插入恶意代码,例如将cookie发送给三方服务。
防御:不信任用户提交、替换请求特殊符号(<>"等)、session标记对话、cookie防盗(避免cookies存放敏感信息)
前端未授权、弱鉴权访问后端接口
使用burpsuite.工具修改接口请求,检查后台是否以cookie中前端以弱鉴权的方式访问后台
接口的UM-USER等容易篡改的id作为鉴权依据。
(标准的鉴权参数有: JSESSIONID, ARKSESSION, JWT、token)
水平越权访问其他用户信息
垂直越权访问管理员接口
微服务间调用鉴权
黑白名单(IP、服务名)、网关鉴权
接口返回用户敏感信息、日志记录返回敏感信息
不可逆:sha1>md5
对称:AES>DES
非对称:RSA,公钥加密、私钥解密,私钥签名、公钥验签
文件上传下载
对下载路径进行判断,防止../等越权攻击
外网接口安全
信息安全:https、接口字段加密签名
DDOS:封IP、增加服务器tps
服务器劫持
安全问题:
中间人伪造公钥
解决方案:
客户端拿到公钥后通过hash获取摘要,和CA进行对比,如果一致才会信任公钥
服务端需要提供whois、域名管理邮箱等才能通过CA拿到私钥
把DNS、CA、服务端信息都拿到才能伪造攻击,或者伪造CA根证书
会话安全测试:
1.用户退出登录时后台应清除会话,可以使用burpsuite重发会话安全测试登录前抓取的报文进行验证。
2.用户登录后30分钟内无操作,后台应清除本次会话,禁止无操作长时间保持会话状态。
使用burpsuite抓包后删除接口请求携带的认证信息(如前端未经授权直接访问后台接口cookie或者token等),重新发送请求检查后台是否进行了