web常见的攻击方式
web攻击(webAttack)是针对用户上网行为或网站服务器等设备进行攻击的行为,如植入恶意代码、修改网站权限、获取网站用户隐私等等,即使是代码在的很小的bug也有可能导致隐私信息被泄漏,站点安全就是保护站点不受未授权的访问、使用、修改和破坏而采取的行为或实践,我们常见的web攻击方式有:
XSS(cross site scripting)跨站脚本攻击
CSRF(cross-site request forgery)跨站请求伪造
SQL注入攻击
1、XSS
XSS(cross site scripting)跨站脚本攻击:允许攻击者将恶意代码植入到提供给其他用户使用的页面中,XSS涉及三方,即攻击者、客户端和web应用,XSS攻击的目标是为了盗取存储在客户端的cookie或者其他网站用于识别客户端身份的敏感信息,一旦获取到合法的用户信息后,攻击者可以假冒合法用户与网站进行交互。
根据攻击的来源,XSS可以分为反射型、存储型、DOM型。
反射型:
攻击步骤:
1、攻击者构造出特殊的URL,其中包含恶意代码;
2、用户打开带有恶意代码的URL时,网站服务器将恶意代码从URL中抽取,拼接在HTML中返回给浏览器;
3、用户浏览器收到相应后解析执行,混在其中的恶意代码也被恶意执行;
4、恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户行为,调用目标网站接口执行攻击者指定的操作。
反射型XSS与存储型XSS的区别是,存储型的恶意代码存在数据库里,反射型的恶意代码存在URL里。
反射型XSS漏洞常见于通过URL传递参数的功能,如网站搜索、跳转等。
由于需要用户主动打开恶意的URL才能生效,攻击者往往会结合多种手段有道用户点击。
<input type="text" value="<%= getKeyWord('keyWord') %>">
<button>搜索</button>
<div>
您搜索的关键字是:<%= getKeyWord('keyWord') %>
</div>
// 如果用户输入“><script> alert('XSS');</script>, 拼接到HTML中返回给浏览器
<input type="text" value=""><script> alert('XSS');</script>">
<button>搜索</button>
<div>
您搜索的关键字是:“><script> alert('XSS');</script>
</div>
// 浏览器无法识别<script> alert('XSS');</script>是恶意代码,因而将其执行
存储型:
攻击步骤:
1、攻击者将恶意代码提交到目标网站的数据库中;
2、用户打开目标网站时,网站服务器将恶意代码从数据库中取出,拼接在HTML中返回给浏览器;
3、用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行;
4、恶意代码窃取用户的数据并发送到攻击者的网站,或者冒充用户行为,调用目标网站接口执行攻击者的指定操作。
这种攻击常见于带有用户保存数据的网站功能,如论坛发帖、商品评论、用户私信等。
DOM型:
攻击步骤:
1、攻击者构造出特殊的URL,其中包含恶意代码;
2、用户打开带有恶意代码的URL;
3、用户浏览器接收到响应后,解析执行,前端JavaScript取出URL中的恶意代码并执行;
4、恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户行为,调用目标服务器接口执行攻击者指定的操作。
DOM型跟前两种的区别是,DOM型XSS攻击中,取出和执行恶意代码由浏览器端完成,属于前端JavaScript自身安全漏洞而其他两种XSS都属于服务端的安全漏洞。
var html = "Image" + parseInt(num) + "<br/>"
html += "<img src='/level3/cloud" + num + ".jpg'/>"
$('#content').html(html )
// 如果num传入的值从url中取的
num = unescape(self.location.hash.substr(1))
// 此时在hash后面输入恶意代码 'onerror="alert()",src属性引用了不正确的地址会触法error,并执行脚本
SQL注入
是通过将恶意的sql查询或添加语句插入到应用的输入参数中,再在后台sql服务器上执行进行的攻击。
流程如下:
1、找出SQL漏洞的注入点;
2、判断数据库的类型与版本;
3、拆解用户名和密码;
4、利用工具查找web后台管理入口;入侵和破坏。
预防方式:
严格检查输入变量的类型与格式;
过滤和转译特殊字符;
对当问数据库的web应用程序采用web应用防火墙;
CSRF
CSRF跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。