DDos distributed denial-of-service 分布式拒绝服务
通过大规模互联网流量淹没目标服务器或其周边基础设施,以破坏目标服务器、服务或网络正常流量的恶意行为。或者劫持僵尸网络,造成大量合法请求,阻塞服务器,负载过重可能宕机等,使服务器拒绝其他正常流量的访问。
识别:
- 来自单个 IP 地址或 IP 范围的可疑流量
- 有规律的访问
- 单个请求异常大量访问
解决方法:识别正常流量和攻击流量
- 提升性能与带宽
- 缓存,CDN等增加并发
- 异常请求,ip,用户的拦截
- DDOS防火墙等
SQL injection sql注入
在表单输入sql语句达到攻击目的 例如:
SELECT * from Users WHERE login = '' or '1'='1' AND password = '' or '1'='1';
解决方案:
- 数据校验
- 过滤非法数据
- 绑定变量,使用预编译pdo
CSRF(Cross-site request forgery)跨站点请求伪造
危险网站伪造被信任用户去请求被攻击的网站,达到伪造请求的目的,被攻击的网站无法分清真正的请求是用户还是危险网站发起的请求,因为具有相同的用户权限。
解决方案:
- CSRF漏洞检测
- 验证 HTTP header的 Referer 字段,Referer参照的意思,用来标识网页来源 (可以被篡改,浏览器自动携带)
- 在请求参数中添加token,并校验(laravel csrftoken)
- 检查内置的隐藏变量,在 HTTP 头中自定义属性并验证,需要自己完善功能
laravel 框架的csrf校验: 就是在客户端form表单中设置一个_token表单域,将值存在session中,每个请求都校验_token的值来检验请求是否合法。
XSS cross site scripting 跨站点脚本攻击
将恶意代码注入到网页上,其他用户加载网页时被执行,通常是javecript,html等。
盗用cookie,获取敏感信息,iframe、frame、XMLHttpRequest或上述Flash等方式执行其他用户的操作,进行投票,发微博,加好友等行为。还可以让被攻击网站 一直访问 小型网站 达到DDOS的效果
例如:
//将 <script>alert(123456)</script> 注入到网页上,就会被运行
http://localhost/test.php?name=<script>alert(123456)</script>
<?phpecho "欢迎您,".$_GET['name'];
解决方案:
- 变量过滤,htmlspecialchars对内容转码
file upload attack 文件上传漏洞
将可执行的文件上传到服务器,达到攻击效果
解决方法:
- 上传目录设置为 不可执行
- 添加文件类型校验,压缩图片文件等,可以破坏可执行代码结构
- 重命名文件
- 使用单独文件服务器,浏览器跨域问题可以拦截部分攻击