1、XSS跨站脚本攻击(Cross Site Scripting)
攻击方式:写恶意脚本[js代码] -> 浏览器可执行 ->大多为读取用户cookie,发送到指定的url -> 拿到用户cookie实现用户登录; ->常出现在“技术博客网站”中,因为用户写代码较多;
解决方案:内容转义;//< > &对<,>,空格,&进行转义,转义后浏览器不能有效识别,代码便不可执行 -> 大多数网站都有该功能;
v-html的使用很容易造成XSS攻击,以及模版字符串的使用也容易被攻击,可使用安全函数,底层也是内容转义;
2、CSRF(Cross-site request forgery)跨站请求伪造
攻击方式:浏览器中 HTTP(s) 请求是会自动帮我们把cookie 带上传给服务端的,这样在每次请求的时候通过 cookie 获取 session id,然后通过它在服务端获取登录信息即可完成用户权限的校验,如果一个用户在A网站登录了,并且在没有登出的情况下(没有清除本地信息,包括cookie),用户在 B 网站访问的时候发送了一个 A 网站的请求,那么这个请求其实是带有这个用户在 A 网站的登录信息的。如果这时候 B 站发送的 A 网站请求是用户不知道的,并且可以进行用户非本意操作,获取信息,修改内容,转账等等;-> 还有个很大的危害CSRF蠕虫:产生蠕虫效果,会将 CSRF 攻击一传十,十传百。如:某社区私信好友的接口和获取好友列表的接口都存在CSRF漏洞,攻击者就可以将其组合成一个CSRF蠕虫——当一个用户访问恶意页面后通过CSRF获取其好友列表信息,然后再利用私信好友的CSRF漏洞给其每个好友发送一条指向恶意页面的信息,只要有人查看这个信息里的链接,CSRF蠕虫就会不断传播下去,其可能造成的危害和影响非常巨大!
防御手段:
(1).检查请求头中的Referer字段:判断请求是否是从本站发出的,我们可以拒绝一切非本站发出的请求,虽然简单,不过当网站域名有多个,或者经常变换域名的时候会变得非常的麻烦,同时也具有一定的局限性;
(2).Token验证:由于 CSRF 是利用了浏览器自动传递 cookie 的特性,另外一个防御思路就是校验信息不通过 cookie 传递,在其他参数中增加随机加密串进行校验。为每一个提交增加一个指定串参数,该参数服务端通过页面下发,放到localStorage中,每次请求的时候补充到提交参数中,服务端通过校验该参数是否一致来判断是否是用户请求。由于 CSRF 攻击中攻击者是无从事先得知该字符串,所以服务端就可以通过校验该值拒绝请求;
3、DDoS攻击[分布式拒绝服务(Distributed Denial of Service)攻击]
攻击方式:一台最好的服务器也就并发4~5万人(最优的带宽/内存/缓存/硬盘),普通电脑可以开1000~2000个进程,可采取计算机联合攻击的方式 -> 使用多台普通电脑(都开满线程),向某网站发送网络请求,把某网站的服务器内存占满,算力用光,该网站就不能再接收正常用户的网络请求,不久之后服务器就会崩溃 ->也称为饱和攻击;
解决方案:1.蜜罐处理 -> 其只是能记录发送请求的IP地址,以后有依据起诉某方 -> DDoS攻击如果下血本攻击,并不能有效处理;2.隐藏服务器的真实IP地址;
4、域名劫持
场景:大多数网站访问都需要经过“反向代理服务器”,然后打到真正的服务器上获取数据 ->域名劫持发生在反向代理服务器到真正服务器之间,主要目的是"流量劫持",大公司经常发生,人为操作可能性很大[灰色地带];
5、拖库攻击 -> 获取数据
场景:本地跨域可获取“百度搜索框”的数据,但是本地即使跨域也不能访问到京东、美团的数据,因为它们都做了安全策略,防止竞争对手获取数据 -> 拖库攻击:若能成功获取某个数据,请求参数使用穷举方式进行遍历操作,便可把数据库内的数据都拉取出来;
区别:爬虫是爬取所有页面数据;
6、sql注入 :
场景:其把SQL命令插入到web表单或输入域名或数据请求中 -> 涉及到数据库数据操作
解决方案:1.建议对用户的输入进行校验;2.不要动态拼接SQL,可使用参数化的SQL或者直接使用存储过程进行数据查询存取;3.不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接;
参考网址:
https://www.cnblogs.com/anyhoo/p/10635540.html
https://www.cnblogs.com/443855539-wind/p/6055816.html
http://web.jobbole.com/92875/
网友评论