赞
踩
XSS攻击(Cross Site Scripting)是Web应用程序中最常见的漏洞攻击之一,通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript
,但实际上也可以包括Java
、VBScript
、ActiveX
、Flash
或者甚至是普通的HTML
。攻击成功后,攻击者可能得到包括但不限于更高的权限(比如执行一些操作)、私密网页内容、会话和cookie
等各种内容。所以xss漏洞关键就是寻找参数未过滤的输出函数。
常见的输出函数有: echo printf print print_r sprintf die var-dump var_export
。
( )
英文圆括号、< >
尖括号等。但是此方法只是在web端进行了初步过滤,攻击者可能通过工具绕过前端的输入限制,因此还需后台服务器在接收到数据后,对特殊危险字符进行过滤或者转义,再存储到数据库。htmlentities( )
函数和htmlspecialchars( )
函数对服务端输出到浏览器的数据进行编码或转义来防范XSS攻击。相应的JavaScript的编码可以使用JavaScriptEnode
。innerText
(IE)和textContent
(Firefox),也就是jQuery的text( )
来输出文本内容,尽量避免Web客户端文档重写、重定向或其它敏感操作。HttpOnly
参数,就可以避免该网页被XSS攻击时,cookie信息被盗取(可兼容至IE6);缺点是,作用有限,只能保证cookie的安全。存储型XSS对用户输入进行过滤的方式和反射型XSS相同。
htmlspecialchars( )
和htmlentities( )
的区别:htmlspecialchars
只转义 &
、"
、'
、<
、>
这几个html代码;htmlentities
却会转化所有的html代码,连同里面的它无法识别的中文字符也会转化。URL
、location
、referer
等。vaildURL
、HtmlEncode
、HtmlAttributeEncode
等函数方法。CSRF攻击(Cross-site request forgery)是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。与XSS相比, XSS利用的是用户对指定网站的信任,而 CSRF 利用的是网站对用户网页浏览器的信任。
假如一家银行用以运行转账操作的URL地址如下:http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName
那么,一个恶意攻击者可以在另一个网站上放置如下代码: <img src="http://www.examplebank.com/withdraw?account=Alice&amount=1000&for=Badman">
如果有账户名为Alice的用户访问了恶意站点,而她之前刚访问过银行不久,登录信息尚未过期,那么她就会损失1000资金。
这种恶意的网址可以有很多种形式,藏身于网页中的许多地方。此外,攻击者也不需要控制放置恶意网址的网站。例如他可以将这种地址藏在论坛、博客等任何用户生成内容的网站中。这意味着如果服务端没有合适的防御措施的话,用户即使访问熟悉的可信网站也有受攻击的危险。
通过这个例子能够看出,攻击者并不能通过CSRF攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户浏览器,让其以用户的名义运行操作。
Referer
字段,这个字段用以标明请求来源于哪个地址。在处理敏感数据请求时,通常来说,Referer
字段应和请求的地址位于同一域名下。以上文银行操作为例,Referer
字段地址通常应该是转账按钮所在的网页地址,应该也位于www.examplebank.com
之下。而如果是CSRF攻击传来的请求,Referer
字段会是包含恶意网址的地址,不会位于www.examplebank.com
之下,这时候服务器就能识别出恶意的访问。Referer
字段,虽然HTTP协议对此字段的内容有明确的规定,但无法保证浏览器没有安全漏洞影响到此字段。token
,并在服务器建立一个拦截器来验证这个token
。服务器读取浏览器当前域cookie
中这个token值,会校验该请求当中的token
和cookie
中的token
值是否都存在且相等,才认为这是合法的请求;否则认为这次请求是违法的,拒绝该次服务。这种方法要比Referer检查安全很多。SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
特点 | 概述 |
---|---|
广泛性 | 任何一个基于SQL语言的数据库都可能被攻击,很多开发人员在编写Web应用程序时未对从 |
隐蔽性 | SQL注入语句一般都嵌入在普通的HTTP请求中,很难与正常语句区分开,所以当前许多防火墙都无法识别予以警告,而且SQL注入变种极多,攻击者可以调整攻击的参数,所以使用传统的方法防御SQL注入效果非常不理想。 |
危害大 | 攻击者通过SQL注入获取到服务器的库名、表名、字段名,从而获取到整个服务器中的数据,对网站用户的数据安全有极大的威胁。攻击者也可以通过获取到的数据,得到后台管理员的密码,然后对网页页面进行恶意篡改。这样不仅对数据库信息安全造成严重威胁,对整个数据库系统安全也影响重大。 |
操作方便 | 互联网上有很多SQL注入工具,简单易学,攻击过程简单,不需要专业知识也能自如运用。 |
1 and version( )>0
”,程序返回正常,说明version( )
函数被数据库识别并执行,而version( )
函数是MySQL特有的函数,因此可以推断后台数据库为MySQL。wwwscan
、AWVS
)快速搜索到可能的登录地址,然后逐一尝试,便可以找到后台管理平台的登录网址。' '
单引号、" "
双引号、:
冒号等字符),或者采用参数传值的方式传递输入变量。这样可以最大程度防范SQL注入攻击。类型 | 解析 |
---|---|
对称加密 | 即加密方和解密方都使用相同的加密算法和密钥,这种方案的密钥的保存非常关键,因为算法是公开的,而密钥是保密的,一旦密匙泄露,黑客仍然可以轻易解密。常见的对称加密算法有: |
非对称加密 | 即使用不同的密钥来进行加解密,密钥被分为公钥和私钥,用私钥加密的数据必须使用公钥来解密,同样用公钥加密的数据必须用对应的私钥来解密,常见的非对称加密算法有: |
不可逆加密 | 利用哈希算法使数据加密之后无法解密回原数据,这样的哈希算法常用的有: |
*[数据库信息加密]:《SQL注入攻击及其防范技术研究》,万方数据知识服务平台 |
OS命令注入(OS Command Injection)类似于上述的SQL注入,区别于应用场景不同。OS 注入攻击是指程序提供了直接执行Shell
命令的函数的场景,比如在构造OS命令时使用了外部输入的数据,如果没有对外部输入中可能影响OS命令的特殊元素进行过滤,或是过滤不充分,就有受到OS命令注入攻击的风险。
OS命令注入漏洞的形成需要同时满足以下三个条件:
system
、open
等)*
、?
、[]
、\
等)没有被转义exec()
之外,还有 execFile()
和 spawn()
两个方法也可以用来执行系统命令。它们和 exec()
的区别是后者是直接将一个命令字符串传给 /bin/sh
执行,而前者是提供了一个数组作为参数容器,最后参数会被直接传到 C 的命令执行方法 execve()
中,不容易执行额外的参数。/bin/find
)提供了-exec
参数,后续的参数传入后会被其当成命令执行。 点击劫持(click jacking),也被称为UI-覆盖攻击,顾名思义,和点击事件有关,利用用户的点击操作,来完成非用户本意的操作。
这种攻击利用了HTML中<iframe>
标签的透明属性。虽然你点击的是你正在访问的页面,但其实上面覆盖了一层恶意攻击者精心构建的一个透明页面。
top
对象为window,而iframe
的top对象不等于window对象,所以可以在JS代码中插入:if(top.location != window.location){
top.location == window.location;
}
这样如果存在嵌套的iframe
,页面就会跳转,避免遭到点击劫持。但是如果攻击者设置iframe
的属性sandbox="allow-forms"
时,这种方法就会失效。
X-Frame-Options:DENY
"来让浏览器主动禁止iframe
内嵌。不过这种方式在HTTP中不可靠,恶意攻击者可以窃听篡改HTTP请求来修改HTTP头。ClearClick
组件能够检测和警告潜在的点击劫持攻击,自动检测页面中可能不安全的页面。HTTP劫持是在使用者与其目的网络服务所建立的专用数据通道中,监视特定数据信息,提示当满足设定的条件时,就会在正常的数据流中插入精心设计的网络数据报文,目的是让用户端程序解释“错误”的数据,并以弹出新窗口的形式在使用者界面展示宣传性广告或者直接显示某网站的内容。
https://www.baidu.com
来访问百度。DDOS(Distributed Denial of Service)即分布式拒绝服务攻击,是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。
NIPC
、NGREP
),经常扫描检查系统,解决系统的漏洞,对系统文件和应用程序进行加密,并定期检查这些文件的变化。本文只是简单地介绍了一些常见的前端安全性问题,在实际生活中,靠前端防范是远远不够的,还需要在后台系统进行进一步的过滤。当然,除了本文列出的防范措施外,还有其他的方法,感兴趣可以自己研究研究~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。