第一次写网站特意用下面的方式去测试一下安全,发现全部入坑
1. DDos攻击
拒绝服务攻击:使系统过于忙碌而不能执行有用的业务并且占尽关键系统资源,常见有TCP泛洪,UDP泛洪。
利用了TCP的三次握手,大量请求连接发送给服务器端,即SYN同步请求,当服务器响应ACK时,客户端消失了,那么服务端就会重试,导致半连接数量过多而宕机
防范:
- CDN分散静态内容,隐藏源服务器IP地址
- 验证码+黑名单机制
- 限流降级,访问频率
2. SQL注入
在SQL语句中的参数中注入SQL语句,改变原本的语句
select * from user where username="userName" and password="password";
select * from user where username=" or 1 = 1 -- " and password="password";
防范:
- 使用占位符 ?,#{},还有预编译效果
3. XSS
跨站脚本攻击:没有对用户提交的数据进行转义处理,然后用户添加攻击代码,其他用户访问后会被攻击
防范:
- HttpOnly避免Cookie劫持
- 编码过滤转义特殊字符,标签,属性
4. CSRF
跨站请求伪造:在用户已经登录的网站上执行非用户意愿的操作。
比如用户在站点A登录后有了Cookie,然后去访问站点B,站点B返回攻击性代码,要求访问站点A并执行某些操作
防范:
- 添加一个不能伪造的token,且不存在于Cookie中
- 验证Http Referer字段,来源
5. 文件上传漏洞
在允许用户上传图片或者普通文本文件保存,而用户上传恶意代码并执行从而控制服务器。
防范:
- 前后端进行文件后缀判断,设置黑白名单
- 服务区端重命名