社区专栏>一文搞懂 XSS攻击、SQL注入、CSRF攻击、DDOS攻击、DNS劫持>
原创
一文搞懂 XSS攻击、SQL注入、CSRF攻击、DDOS攻击、DNS劫持
xss攻击
- 全称跨站脚本攻击
Cross Site Scripting
- 为了与重叠样式表
CSS
进行区分,所以换了另一个缩写名称 XSS
XSS
攻击者通过篡改网页,注入恶意的 HTML
脚本,一般是 javascript
,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式
XSS
攻击经常使用在论坛,博客等应用中。攻击者可以偷取用户Cookie
、密码等重要数据,进而伪造交易、盗取用户财产、窃取情报等私密信息
- 如果用户在评论框中输入的并不是正常的文本,而是一段
javascript
脚本,而后台又没对该用户的数据进行处理,直接存入数据库,那么当其他用户过来访问该页面,浏览器必然会执行这段脚本
- 如果用户在评论框中输入的并不是正常的文本,而是一段
javascript
脚本,而后台又没对该用户的数据进行处理,直接存入数据库,那么当其他用户过来访问该页面,浏览器必然会执行这段脚本
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
或其他用于身份认证的信息,这一次被 恶意意图
的请求,将会自动带上这些信息,这将会导致身份劫持,造成并非本人意愿的操作结果
- 而对应
CSRF攻击
的防御策略有:表单token
、 验证码
、Referer 检测
等
DDOS 攻击
- DOS 全称 Distributed Denial of Service,分布式拒绝服务攻击。是拒绝服务攻击的升级版。拒绝攻击服务其实就是让你的服务不能正常给用户提供服务,也就是俗话说的服务宕机。常用于攻击对外提供服务的服务器,像常见的:Web服务、邮件服务、DNS服务、即时通讯服务 这些等
- 在早期发起
DoS攻击
是一件很容易的事情,只需要写个程序让服务过载,无暇提供正常服务即可,也就是一秒中请求服务多次,将目标服务器的内存跑崩
- 后来随着技术对发展,现在的服务器都是分布式,并不是单一服务器提供服务,一个服务背后拥有着是数不清的
CDN节点
,也是就拥有着数不清的Web服务器
。想靠单台服务器去攻击这种分布式网络,无异于对方以卵击石
,而且现在很多 DDOS 攻击
都不是免费的,所以很容易造成偷鸡不成蚀把米
- 防御手段:随着技术发展到今天也并不能完全杜绝这种攻击的出现,只能通过技术去缓解。其中包括:
流量清洗
、SYN Cookie
等等
DNS 劫持
- 当今互联网流量中,以
HTTP/HTTPS
为主的 Web服务
产生的流量占据了绝大部分
Web服务
发展的如火如荼,这背后离不开一个默默无闻的大功臣就是域名解析系统,DNS
提供将域名转换成 ip地址
的服务,每一个域名的解析都要经过 DNS
,所以可以看出它的重要性
- 正是因为它的重要性,所以
DNS劫持
很容易被别有用心的人利用
- 早期并没有考虑太多的安全性,所以导致
DNS
很容易被劫持
- 如果攻击者篡改
DNS解析
设置,将域名由正常 IP
指向由攻击者控制的非法 IP
,就会导致我们访问域名打开的却不是对应的网站,而是一个假冒或者别有用心的网站。这种攻击手段就是 DNS劫持
- 通过
DNS劫持
简单点可以导致用户流失,严重的后果甚至惠将用户诱导至攻击者控制额非法网站,可能会造成银行卡号、手机号码、账号密码等重要信息的泄露
- 后来出现了
DNSSEC
技术,虽然在一定程度上解决了劫持问题,但是国内并没有太多应用的案例,因此后来阿里、腾讯推出了 httpDNS
服务也一定程度上可以抑制这种攻击手段
- 另外可以
安装SSL证书
。SSL证书具备服务器身份认证功能,可以使DNS 劫持导致的连接错误情况及时被发现和终止