浅谈web攻击那些事儿~

411 阅读4分钟

这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战

随着互联网与浏览器的发展,我们能在浏览器上做越来越多的事情,比如看电影、听音乐、购物、玩游戏....我们在享受着技术给我们带来便利的同时,也伴随着更多的风险,因为可以做的事情多了,那么黑客可以利用的漏洞也就更多了,攻击手段也就更多种多样,这篇文章就准备聊聊现在web领域常见的一些攻击,从而可以让我们思考在平时的开发中如何去规避这些攻击,废话不多说,开搞!

ppx2.jpg

现在web领域常见的攻击有如下种类

  • XSS(跨站脚本攻击)
  • CSRF(跨站请求伪造)
  • 点击劫持
  • CDN劫持
  • opener攻击
  • DNS劫持
  • SQL注入

由于XSS和CSRF我准备单独写两篇文章来讲解它们,所以接下来除了它俩之外,其他的就分别浅谈一下各类攻击的方式与危害,从而可以对web攻击有一个系统的认知,开始吧~

点击劫持

实现的步骤如下

  • 利用一个 iframe 加载一个目标网页A,此网站是攻击者需要用户真正操作的网页
  • 准备一个诱导页B,这个页面会放置一些 可交互 的元素对准网页A上的内容,从而欺骗用户进行交互
  • 将iframe 透明度 设置为0,并放置在诱导页B之上,这样用户根本就不知道自己实际进行交互的是网页A,从而达到点击劫持的目的

这种方式其实就是一个障眼法,利用iframe不可见,从而达到欺骗的目的,要想规避这种攻击,有如下方式

  • 网页的http头部增加 X-Frame-Options,这个响应头有三个值可选
    • DENY:表示该页面不允许在iframe中展示,即便是在相同域名的页面中嵌套也不允许
    • SAMEORIGIN:表示该页面可以在相同域名页面的iframe中展示.
    • ALLOW-FROM:origin:表示该页面可以在指定来源的iframe中展示,Chrome不支持 Firefox支持
  • 判断 topself 是否相等,如果不相等则证明当前网页被iframe加载,那么就可以执行类似 重定向 的操作来避免被引用

CDN劫持

现在web应用为了提高性能,往往会把很多静态资源诸如图片、js、css都放在CDN上,这样就可以提高网站的加载速度,但是如果黑客攻击了CDN服务器,修改了静态资源,那么用户就会访问到被污染的资源,从而达到黑客的目的

opener攻击

在网页中进行新标签的跳转,一般有两种方式

  • <a target='_blank' href='http://www.baidu.com'>
  • window.open('http://www.baidu.com')

看上去没问题,但是opener攻击实现的核心就是利用新跳转的网页可以通过 window.opener 访问到原页面的 window 对象,从而可以做任何黑客想做的事情,例如在用户不知情的情况下,将原网页重定向到黑客的网站,从而可以达到窃取用户信息的目的

要规避这种攻击,上述两种跳转方式需要如下调整

  • <a target='_blank' href='http://www.baidu.com' rel="noopener noreferrer">,noopener属性会使新页面无法访问到原页面的window对象,noreferrer属性使http请求头中不包含referrer字段
  • var newTab = window.open(); newTab.opener = null; newTab.location = 'http://www.baidu.com';,通过手动清除掉opener,从而规避了风险

DNS劫持

DNS是一个将域名映射为IP的系统,如果黑客将DNS服务器劫持了,那么它就可以修改域名到IP的映射关系,从而将一个正常的域名解析到黑客的服务器IP,从而实现攻击的目的

SQL注入

SQL注入即是指web应用程序对用户输入数据的 合法性 没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加 额外的 SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行 非授权 的任意查询,从而进一步得到相应的数据信息

SQL注入是将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句,传递给Web服务器,进而传给数据库服务器以执行数据库命令。如Web应用程序的开发人员对用户所输入的数据或cookie等内容不进行过滤或验证(即存在注入点)就直接传输给数据库,就可能导致拼接的SQL被执行,获取对数据库的信息以及提权,发生SQL注入攻击

规避SQL注入的主要防范措施就是加强对用户输入的 校验与过滤,前后端都要做,这样才能最大程度避免SQL注入的发生

结语

这篇文章浅谈了目前在web领域常见的一些攻击种类,在下一篇文章中,我将详细聊聊关于XSS攻击的东西,敬请期待吧~