跨站脚本攻击,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. POJ 2449 Remmarguts' Date (K短路 A*算法)

    题目链接 Description "Good man never makes girls wait or breaks an appointment!" said the mand ...

  2. 【Loadrunner】LR参数化:利用mysql数据库里面的数据进行参数化

    很多同学都在自学loadrunner去做压力测试,但是如果要利用LR做压力测试,或者是其他工具,其中有一个环节是我们避开不了的,比如说:参数化 今天华华就给大家简要的介绍下,如果你要做的参数化的数据来 ...

  3. 【读书笔记::深入理解linux内核】内存寻址【转】

    转自:http://www.cnblogs.com/likeyiyy/p/3837272.html 我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0 ...

  4. Linux时间子系统之七:定时器的应用--msleep(),hrtimer_nanosleep()【转】

    转自:http://blog.csdn.net/droidphone/article/details/8104433 我们已经在前面几章介绍了低分辨率定时器和高精度定时器的实现原理,内核为了方便其它子 ...

  5. aarch64_g5

    gtkmm24-devel-2.24.5-2.fc26.aarch64.rpm 2017-02-11 18:17 620K fedora Mirroring Project gtkmm24-docs- ...

  6. 08 Packages 包

    Packages   Standard library Other packages Sub-repositories Community Standard library Name Synopsis ...

  7. python基础--re模块

    常用正则表达式符号 '.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 '^' 匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r& ...

  8. MongoDB-MongoDB重装系统后恢复

    重装系统后,把原mongoDB安装目录和原mongoDB的data目录拷贝到新硬盘的D盘上. 恢复的方法如下. 1.D:\Mongodb里放着mongod.cfg和data C:\Users\Admi ...

  9. VMware虚拟机的三种联网方法及原理(转)

    转自:http://blog.chinaunix.net/uid-24876683-id-3593774.html 一.Brigde——桥接 :默认使用VMnet0 .原理: Bridge 桥&quo ...

  10. html meta标签使用总结(转)

    之前学习前端中,对meta标签的了解仅仅只是这一句. <meta charset="UTF-8"> 但是打开任意的网站,其head标签内都有一列的meta标签.比如我博 ...