2.1.1. 常见网站攻击方式以及开发防范手段
- 暴力攻击
- Ddos
- 邮件炸弹
- 脚本攻击
- Sql注入
- Xss
- Csrf + 中间人攻击
- 重定向(钓鱼网站)
- 高级攻击方式
- Sniffer扫描
- 京东(struts2)缓冲区逸出
2.1.1. 脚本攻击
2.1.1.1. Sql注入
- 数据库被非法修改
- 拖库
原因:sql拼接
- 使用preparedStatement
- 不要直接使用JDBCTemplate,使用NamedParameterJdbcTemplate
如下:
update table set aaa = xx where id = 1;delete from table1
id为条件,如果被传进来是后面的一句话,那么就拼接成了多条sql。 至于为什么使用preparedStatement就可以防范了。还有待去查看。
2.1.1.2. XSS(跨站脚本攻击)
如:在插入的字符串里面添加js脚本。 注:现在的前端框架一般都会当成字符串处理。
网站会直接展示用户输入,造成字符串被直接当次html代码执行
- 对用户输入进行校验:转义<>等符号
- 富文本编辑框得到的内容。(一般自带内容转义功能)
2.1.1.3. CSRF(请求伪造)
因为通过了别人的代理。所以 这个代理可以拿到你的请求并修改或则存储你的信息; http 协议是文本协议。所以容易被获取。 https 是二进制协议。所以不太容易被获取
2.1.1.3.1. 解决方案
SSL - 证书
- 证书安全
- 运维部署困难
加签/验签 sign
也就是签名,服务端和客户端都有一个签名。 类似微信的签名。
注
: 该方案的key不能在网络中传输,也就是不能用于js中
- 算法 类似微信的算法,自然排序,再加上key,变成一个字符串,进行MD5/RSA 等加密算法得到一个字符串sign
- key
应用场景
- 金融接口
- 收单接口
服务端到服务端通信,或则手机端app对服务端的通信
2.1.1.4. 重定向(钓鱼网站)
上图中,单点登录后,需要跳转回原来的地址,那么这个地址,是通过请求发送过去的。也就是在这一步,如果被伪造修改,那么登录之后就会调转到修改之后的地址。
2.1.1.5. sniffer
- 端口扫描
- 扫描软件漏洞
- oracle:1521
- Mysql:3309
- Svn:3690
- Redis:6379(bug)
- SSH:22(bug)
- 扫描软件漏洞
- telnet
- 防ping
- 防火墙
- 端口自定义
2.1.1.6. 缓冲区逸出
通过端口扫描,可以用缓冲区逸出来攻击
京东 - Struts2
- 12年出现严重的bug
- 接受参数的时候,使用ognl,ognl里面的map存在严重的hash冲突的时候,就会溢出,直接获得shell
Oracle
- 缓冲区逸出(php)
- (代码里面限定数据大小)