跨站脚本攻击,Cross-site script,是Web程序中最常见的漏洞。为了和CSS层叠样式表区分开,所以取名为 XSS。

一、XSS的重点

跨域和客户端执行。

二、XSS的原理

攻击者向有XSS漏洞的网站中输入恶意的html或js代码,当其它用户浏览该网站时,html或js代码会自动执行,从而达到攻击的目的。

三、XSS的分类

1、存储型,持久型

在客户端文本框输入某脚本代码,提交到服务器,如果服务器没有过滤或转义掉这些脚本,直接存入数据库,其他用户访问这个页面的时候就会运行这段脚本。存储型XSS的攻击影响力比较大,有时候服务端需要删好几张表,查询很多库才能将恶意代码的数据进行删除。

例如,在评论文本框中输入

<script>
while(true) {
alert('你关不掉我');
}
</script>

2、反射型,非持久型

一来一去,脚本代码被服务器反射回来给浏览器执行,称为反射型XSS。反射型XSS是一次性的,仅对当次的页面访问产生影响。反射型XSS是对一个页面的URL中的某个参数做文章,把精心构造好的恶意脚本包装在URL参数中,再将这个URL发布到网上,骗取用户访问,从而进行攻击。反射型XSS的安全威胁比较小,因为只要服务器调整业务代码进行过滤,黑客精心构造的这段URL就会瞬间失效了。

例如,某网站A页面有搜索功能,历史记录的存取是前端通过cookie实现的,前端从文本框获取关键字及信息存入cookie,然后从url中的kw参数值来读出对应的cookie信息。

如果在地址栏url后面手动拼接

sfrom=syiconf8uk1"><script>alert(1)</script>m4cho

,回车后,页面会弹出1,也就是说url里面的代码执行了。解决办法是在存cookie的时候,对关键字进行特殊格式过滤。

function stripscript(s) {
var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*();—|{}【】‘;:”“'。,、?]");
var rs = "";
for (var i = 0; i < s.length; i++) {
rs = rs + s.substr(i, 1).replace(pattern, '');
}
return rs;
}

3、基于DOM或本地的XSS攻击。

一般是提供一个免费的wifi,但是提供免费wifi的网关会往你访问的任何页面插入一段脚本或者是直接返回一个钓鱼页面,从而植入恶意脚本。DOM XSS的代码并不需要服务器参与,触发XSS靠的是浏览器端的DOM解析,完全是客户端的事情。

四、XSS的危害

1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号;

2、盗取用户的Cookie;

3、破坏页面结构;

4、重定向到其它网站。

五、XSS的防御

理论上,网站内所有可输入的地方没有对输入内容进行处理的话,都会存在XSS漏洞,漏洞的危险取决于攻击代码的威力,攻击代码也不局限于script,防御XSS最简单直接的方法就是过滤用户的输入。

1、将重要的cookie标记为http only这样Javascript中的document.cookie语句就不能获取到cookie了;

2、只允许用户输入我们期望的数据。例如:年龄的textbox中,只允许用户输入数字,而数字之外的字符都过滤掉;

3、对数据进行Html转义处理;

4、过滤或移除特殊的html标签,例如: <script>, <iframe> ,  < for <, > for >, " for;

5、过滤JavaScript 事件的标签。例如 "onclick=", "onfocus" 等等。

web客户端安全之跨站脚本攻击的更多相关文章

  1. web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造)

    web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造) XSS(跨站脚本攻击)和CSRF(跨站请求伪造) Cross-site Scripting (XSS) h ...

  2. [Web安全之实战] 跨站脚本攻击XSS

    Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. 文章Points:  1. 认识XSS 2. ...

  3. web安全之xss跨站脚本攻击

    实验(一) 一.预备知识 1.HTML基础知识 2.phpstudy运用 3.xss的分类   二.实验环境 1.火狐浏览器.Chrome浏览器 2.phpstudy   三.环境搭建 反射型xss环 ...

  4. Web安全测试之XSS(跨站脚本攻击)

    XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞.指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的 ...

  5. Web攻防系列教程之跨站脚本攻击和防范技巧详解

    摘要:XSS跨站脚本攻击一直都被认为是客户端Web安全中最主流的攻击方式.因为Web环境的复杂性以及XSS跨站脚本攻击的多变性,使得该类型攻击很 难彻底解决.那么,XSS跨站脚本攻击具体攻击行为是什么 ...

  6. Web安全之跨站脚本攻击(XSS)

    XSS 简介 跨站脚本攻击,英文全称是 Cross Site Script,本来缩写是CSS,但是为了和层叠样式表(Cascading Style Sheet,CSS)有所区别,所以在安全领域叫做&q ...

  7. 【安全测试】Web应用安全之XSS跨站脚本攻击漏洞

    前言 以前都只是在各类文档中见到过XSS,也进行过相关的学习,但是都是一知半解,过了一段时间就忘了. 前几天我们收到了了一份标题为<XX账号昵称参数中存在存储XSS漏洞>的报告文档,来源是 ...

  8. web应用程序安全攻防---sql注入和xss跨站脚本攻击

    kali视频学习请看 http://www.cnblogs.com/lidong20179210/p/8909569.html 博文主要内容包括两种常见的web攻击 sql注入 XSS跨站脚本攻击 代 ...

  9. Web安全相关(一):跨站脚本攻击(XSS)

    简介 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往Web页 ...

随机推荐

  1. 8、String练习题

    String练习   1.字符串反转,例如将"abc"变成"cba" 2.统计一个字符串里面另一个字符串出现的次数,例如统计"monkey" ...

  2. Linux基础-sed+正则表达式

    1,删除文件每行的第一个字符:sed -r 's/^.//g' passwd 2,删除文件每行的第二个字符:sed -r 's/^(.)(.)/\2/g' passwd 3,删除文件每行的最后一个字符 ...

  3. imperva-指定url禁止访问

    指定url禁止访问 应用到那个网站 访问一下查看告警

  4. Sort Colors I & II

    Given an array with n objects colored red, white or blue, sort them so that objects of the same colo ...

  5. 音频自动增益 与 静音检测 算法 附完整C代码【转】

    转自:https://www.cnblogs.com/cpuimage/p/8908551.html 前面分享过一个算法<音频增益响度分析 ReplayGain 附完整C代码示例> 主要用 ...

  6. CRF条件随机场

    CRF的进化 https://flystarhe.github.io/2016/07/13/hmm-memm-crf/参考: http://blog.echen.me/2012/01/03/intro ...

  7. js中的盒子模型

    说到盒子模型,你第一时间会想到css盒子模型,css中的盒子模型包括(内容区+内边距+边框).那在js中怎么去获取这些属性值呢?下面一起来学习js中的盒子模型. css样式 body { margin ...

  8. 牛客红包OI赛 B 小可爱序列

    Description 链接:https://ac.nowcoder.com/acm/contest/224/B 来源:牛客网 "我愿意舍弃一切,以想念你,终此一生." " ...

  9. 洛谷P1525关押罪犯

    传送门啦 想让最大值最小,所以,这题可以用二分法,排序之后发现可以并查集,因为要使最大值最小,排序后这个最大值是存在的. 对于会冲突的两个罪犯,我们连一条无向边,然后按权值从大到小排序,从大到小枚举每 ...

  10. B树 B+树 红黑树

    B-Tree(B树) 具体讲解之前,有一点,再次强调下:B-树,即为B树.因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解. ...