一文搞懂│XSS 攻击、SQL 注入、CSRF 攻击、DDOS 攻击、DNS 劫持
🎈 XSS 攻击
全称跨站脚本攻击
Cross Site Scripting
为了与重叠样式表
CSS
进行区分,所以换了另一个缩写名称XSS
XSS
攻击者通过篡改网页,注入恶意的HTML
脚本,一般是javascript
,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式XSS
攻击经常使用在论坛,博客等应用中。攻击者可以偷取用户Cookie
、密码等重要数据,进而伪造交易、盗取用户财产、窃取情报
就像上图,如果用户在评论框中输入的并不是正常的文本,而是一段
javascript
脚本,而后台又没对该用户的数据进行处理,直接存入数据库,那么当其他用户访问了该页面,必然会执行这段脚本当然这只是恶趣味,而真正的黑客并不会仅仅满足这样的恶趣味,可能更多的是想通过这些
注入脚本
,获取你的个人信息
由上图可知,用户其实在评论的时候,引入了一个第三方脚本,在这个脚本中获取你浏览器的
cookie
信息,并发送到指定的接口进行保存处理,这样你的信息就已经泄露了
在上面逻辑中,脚本中获取了你的个人信息,并将你的个人信息发送到
php
文件中进行处理保存,这样你的个人信息就已经泄露了所以后端在接收用户提交的信息时候,要进行
消毒处理
,也就是过滤一些特殊的字符,比如javascript
脚本中的<>
进行转移\<\>
再进行存储,这样就能有效的进行xss
攻击的预防另外如果
cookie
中设置了HttpOnly
属性,那么通过js
脚本将无法读取到cookie
信息,这样也能有效的防止XSS
攻击窃取cookie
内容
🎈 SQL 注入
SQL注入
攻击指的是攻击者在HTTP
请求中注入恶意SQL
命令,服务器用请求参数构造数据库SQL
命令时,恶意SQL
被一起构造,并在数据库中执行,以便得到数据库中的感兴趣的数据或对数据库进行读取、修改、删除、插入等操作,从而中招SQL注入
攻击,需要攻击者对数据库表有所了解才行,比如你的项目开源
了,数据库是公开的;另外你的网站上线没有关闭调试模式
,根据错误回显可以猜测表结构;还有就是盲注
,也即是盲猜数据表结构,这种难度最大SQL注入
可以通过预编译手段,绑定参数是最好的防SQL
注入方法。现在的框架基本都实现了SQL预编译
和参数绑定
,恶意攻击的SQL
会被当做SQL
的参数,而不是SQL
命令被执行
🎈 CSRF 攻击
CSRF
全称Cross Site Request Forgery,跨站点请求伪造
,攻击者通过跨站请求,以合法的用户身份进行非法操作,如转账交易、发表评论等。其核心是利用了浏览器Cookie
或服务器的Session
策略,盗取用户身份在打开
A网站
的情况下,另开Tab页面
打开恶意网站B
,此时在B页面
的唆使
下,浏览器发起一个对网站A
的HTTP
请求因为之前
A网站
已经打开了,浏览器存有A网站
中的Cookie
或其他用于身份认证的信息,这一次被唆使
的请求,将会自动带上这些信息,将会导致身份劫持,造成并非本人意愿的操作而对应的防御策略有:
表单token
、验证码
、Referer检测
🎈 DDOS 攻击
DDoS
全称Distributed Denial of Service,分布式拒绝服务攻击
。是拒绝服务攻击的升级版。拒绝攻击服务就是让服务不可用。常用于攻击对外提供服务的服务器,像常见的:Web服务
、邮件服务
、DNS服务
、即时通讯服务
在早期发起
DoS攻击
是一件很容易的事情,只需要写个程序让服务过载,无暇提供正常服务即可后来随着技术对发展,现在的服务器都是分布式,并不是单一服务器提供服务,一个服务背后拥有着是数不清的
CDN节点
,也是就数不清的Web服务器
。想靠单台服务器去攻击这种分布式网络,无异于对方以卵击石
防御手段:技术发展到现在也并不能完全杜绝这种攻击的出现,只能通过技术去环节。其中包括:
流量清洗
、SYN Cookie
等等
🎈 DNS 劫持
当今互联网流量中,以
HTTP/HTTPS
为主的Web服务
产生的流量占据了绝大部分。Web服务
发展的如火如荼,这背后离不开一个默默无闻的大功臣就是域名解析系统正是因为它的重要性,所以
DNS劫持
很容易被别有用心的人利用DNS
提供域名转换成ip地址
的服务,早期并没有考虑太多的安全性,后来出现了DNSSEC
技术,虽然在一定程度上解决了劫持问题,但是国内并没有太多应用的案例,因此后来阿里、腾讯推出了httpDNS
服务
版权声明: 本文为 InfoQ 作者【极客飞兔】的原创文章。
原文链接:【http://xie.infoq.cn/article/129ea758358026538b9833f2e】。未经作者许可,禁止转载。
评论