文档章节

Web攻击技术及防御措施

x
 xszl
发布于 2017/08/18 20:44
字数 1675
阅读 14
收藏 0

HTTP协议本身不存在安全问题,因此协议本身不会成为被攻击的对象,应用HTTP协议的服务器和客户端,以及运行在服务器上的资源才是攻击者攻击的目标。

###跨站点脚本攻击 ####输入输出值转义不完全引发的安全漏洞

  • 客户端输入值有可能带有攻击性意义的代码,输入值验证是指检查是否符合系统业务逻辑的数值或者是检查字符编码等预防对策。
  • 从数据库输出至页面的数据,如果转义不完全时,会触发攻击者传入的攻击代码,而给输出对象带来伤害

跨站点脚本攻击俗称XSS(cross-site scripting)是指通过存在安全漏洞的web网站的注册用户的浏览器内运行非法的HTML标签或者是JavaScript进行的一种攻击。

  • 动态生成的HTML 比如一些个人编辑信息页面,如果用户输入了带HTML标签的字段,点击确认后,这个就会被解析成HTML而不是原本想要的文案。

  • 执行脚本 攻击者布好陷阱,创建一段恶意代码的URL,然后隐藏植入邮件或者web页面中,诱使用户点击该URL

    网站通过地址栏中URL的查询字段指定ID,实现在表单内自动填写字符串功能。链接可能像这样:www.example.com/login?id=123,对于这个请求,渲染的html可能是<input value="123">,但是熟知此漏洞的攻击者,创建了一个www.example.com/login?id="><script>xxx</script><span="的链接,如果用户点击进去,那么渲染出来的html就是<input value=""><script>xxx</script><span="">,就会执行攻击者嵌入的脚本,然后自己的cookie或者登陆信息就会发送到攻击者的web网站。

跨站点脚本攻击属于被动攻击模式,除了用户自己需要提防不要点击这些链接,最根本的还是web开发人员需要从源头遏制。不要信赖用户输入的一切信息,前端和后端之间传递的数据也要持怀疑态度。就像上述情况中,如果后端或者前端能将url中的参数转义之后再渲染到页面中,那么恶意脚本就不会执行。 ###跨站点请求伪造 CSRF(cross-site request forgeries)攻击是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的操作,攻击者盗用了你的身份,以你的名义发送恶意请求。属于被动攻击。 下图能简单说明攻击原理 输入图片说明 要完成这此攻击,需要两步:

1、登陆网站A,生成cookie

2、cookie没有过期的情况下访问危险网站B

网站A,它以GET请求来完成银行转账的操作,如:http://www.mybank.com/Transfer.php?toBankId=11&money=1000

危险网站B,它里面有一段HTML的代码如下:

<img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000>

如果先登陆A,再登陆B网站,你就会发现账户少钱了。

这个是因为img发起了GET请求,有人会说改成POST不就行了吗,POST请求也不一定安全,网站B将img改成一个表单提交,结果还是一样。

CSRF攻击主要是因为Web的隐式身份验证机制,Web的身份验证机制虽然可以保证一个请求是来自于某个用户的浏览器,但却无法保证该请求是用户批准发送的。 ####如何防止CSRF

  • 验证 HTTP Referer 字段 Referer字段能记录请求来源,比如要执行A网站的转账功能,必须先登陆A网站,也就是要先访问A网站的登陆页面。如果是用户操作,那么Referer字段是指向登陆页面的,而像上述情况,Referer字段肯定是指向攻击者的网站B了。通过校验Referer来防止CSRF,是一种简单有效的办法,但是存在一些问题:有些浏览器的Referer值可以被更改、有些用户担心会侵犯自己的隐私,设置浏览器不提供Referer。
  • 在请求地址中添加 token 并验证 token 可以在用户登陆后产生并放于 session 之中,请求时将token附在请求地址之后(GET请求)或者在 form 表单的最后加上 <input type=”hidden” name=”csrftoken” value=”tokenvalue”/>(POST请求)发送给服务器,服务器再拿出session中的token 与请求中的 token 进行比对。要对每一个请求都加上 token 是很麻烦的,并且很容易漏掉。
  • 在 HTTP 头中添加token值 和上面将token添加到请求参数中不一样,这种采用将token附加到HTTP头中来达到同样的目的。通过 XMLHttpRequest 这个类,可以一次性给所有该类请求加上 csrftoken 这个 HTTP 头属性,并把 token 值放入其中。这样解决了上种方法在请求中加入 token 的不便,同时,也不用担心 token 泄露到其他网站中去。然而这种方法也有一定的局限性,必须是ajax请求。
  • 验证码 所有请求使用验证码,这个方案是很完美,能确保这个请求一定是用户批准发送的,但是用户体验不够好,所以一般想登陆注册这种重要的接口才使用验证码

###SQL注入

是指对Web应用使用的数据库,通过运行非法的SQL而产生的攻击。该安全隐患有可能会引发极大的威胁,直接导致个人信息及机密信息泄露。

譬如URL中指定了一查询字段q=上野,这个值由前端传给后端,最后执行SQL

SELECT * FROM table WHERE author = '上野' and flag = 1;

显示满足author=上野and flag=1(可售)的数据

攻击者将上述改成q=上野'-- 那么会执行SQL

SELECT * FROM table WHERE author = '上野'--' and flag = 1;

语句中--之后的会被视为注释,and flag 这个条件会被自动忽略。最后尚未出版的书也一并显示出来了。

上面的例子仅仅是把未出版的书显示出来,而实际情况中发生SQL注入时,很有可能会导致用户信息等内容遭到篡改,从而使用户遭受损失。 ###总结 了解XSS、CSRF、SQL注入,还有暴力破解,Ddos攻击等Web攻击技术,是为了找到更好的防御措施,通过有效的方法把风险降到最低。作为开发人员,一定要严格要求自身。

© 著作权归作者所有

x
粉丝 0
博文 14
码字总数 17267
作品 0
私信 提问
关于web应用防火墙的应用分析

web应用防火墙需要理解http协议、分析用户请求数据,实现往返流量的监测和控制,对于一些常见的攻击比如SQL注入、应用平台漏洞攻击、ddos攻击等攻击行为都有良好的防护效果。现在针对web安全...

上树的熊
2018/08/22
0
0
web应用安全受到威胁的类型和应对方案

目前的一些主流攻击方式,有注入式攻击、跨站脚本攻击、CSRF攻击以及![]ddos攻击,这类攻击都已经形成了比较成熟的防御措施。注入漏洞涉及的内容非常广泛,涵盖了各种语言环境以及众多不同的...

上树的熊
2018/10/31
0
0
应对网络安全法,感知防御强力支撑

2017年 6月1日起,《中华人民共和国网络安全法》》(以下简称《网络安全法》)将正式施行,作为我国第一部有关网络安全方面的法律,在网络安全历史上具有里程碑意义。 中国的网络安全将步入有法...

玄学酱
2018/03/27
0
0
机器人攻击来了!拿什么拯救安全防御系统?

  【IT168 评论】自动化和人工智能是当下最火热的词条。两者是把双刃剑,与3C互联网设备结合就会给人们工作生活带来各种便利;跟攻击结合就变成一场灾难,现在的攻击已经形成了多米诺骨牌效...

it168网站
2017/11/23
0
0
web应用程序安全与风险

(1)为什么写这个笔记 刚刚初步入门完毕,想仔细的学习web安全,但是看书和记笔记实在太让人头疼,所以把握自己的学习的笔记和心得记录一下。 web安全越来越让被重视,近年来不断频发的安全...

灰仓鼠
2017/11/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【JavaScript】callee 与 caller

callee callee是函数参数arguments对象的一个属性,它指向参数arguments对象所在的函数自身。 function foo (x) {console.log(arguments.callee);return x;}foo(); 从控制台中可以看...

小草先森
28分钟前
2
0
全面剖析 Knative Eventing 0.6 版本新特性

摘要: Knative Eventing 0.6 版本已经于5月15号正式发布。相比于0.5版本,此次发布包含了一些重要特性及更新。针对这些新特性以及更新,我们如何快速、精准的定位主要技术点。本篇文章针对这...

阿里云云栖社区
30分钟前
9
0
ffmpeg常用命令

1.合并两个或多个视频文件 将a.flv b.flv合并为c.flv 编辑文件flvs.txt file 'a.flv'file 'b.flv' #ffmpeg -f concat -i flvs.txt -c copy c.flv...

硅谷课堂
31分钟前
1
0
MySQL面试题--常见的四种隔离级别

什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个...

寰宇01
31分钟前
2
0
Docker 安装 reids

0、mac上安装docker brew cask install docker 1、查询reidis docker search redis 2、拉取redis最新版本(也可以拉取指定版本,如:docker pull redis:4.0) docker pull redis 3、查看镜像 ...

moon888
40分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部