web客户端安全之跨站脚本攻击
跨站脚本攻击,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客户端安全之跨站脚本攻击的更多相关文章
- web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造)
web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造) XSS(跨站脚本攻击)和CSRF(跨站请求伪造) Cross-site Scripting (XSS) h ...
- [Web安全之实战] 跨站脚本攻击XSS
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. 文章Points: 1. 认识XSS 2. ...
- web安全之xss跨站脚本攻击
实验(一) 一.预备知识 1.HTML基础知识 2.phpstudy运用 3.xss的分类 二.实验环境 1.火狐浏览器.Chrome浏览器 2.phpstudy 三.环境搭建 反射型xss环 ...
- Web安全测试之XSS(跨站脚本攻击)
XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞.指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的 ...
- Web攻防系列教程之跨站脚本攻击和防范技巧详解
摘要:XSS跨站脚本攻击一直都被认为是客户端Web安全中最主流的攻击方式.因为Web环境的复杂性以及XSS跨站脚本攻击的多变性,使得该类型攻击很 难彻底解决.那么,XSS跨站脚本攻击具体攻击行为是什么 ...
- Web安全之跨站脚本攻击(XSS)
XSS 简介 跨站脚本攻击,英文全称是 Cross Site Script,本来缩写是CSS,但是为了和层叠样式表(Cascading Style Sheet,CSS)有所区别,所以在安全领域叫做&q ...
- 【安全测试】Web应用安全之XSS跨站脚本攻击漏洞
前言 以前都只是在各类文档中见到过XSS,也进行过相关的学习,但是都是一知半解,过了一段时间就忘了. 前几天我们收到了了一份标题为<XX账号昵称参数中存在存储XSS漏洞>的报告文档,来源是 ...
- web应用程序安全攻防---sql注入和xss跨站脚本攻击
kali视频学习请看 http://www.cnblogs.com/lidong20179210/p/8909569.html 博文主要内容包括两种常见的web攻击 sql注入 XSS跨站脚本攻击 代 ...
- Web安全相关(一):跨站脚本攻击(XSS)
简介 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往Web页 ...
随机推荐
- 20155315 2016-2017-2 《Java程序设计》第五周学习总结
教材学习内容总结 第8章 异常处理 1.使用try...catch 与C语言中程序流程和错误处理混在一起不同,Java中把正常流程放try块中,错误(异常)处理放catch块中. 如果父类异常对象在子 ...
- python collection 中的队列
认识中的队列 在以前的认知里,队列是先进先出,就是一头进,一头出,Queue.而无意间看到了deque 双向队列. 即从该队列的头或者尾部都能插入和移除元素.而起时间复杂度竟然是一样的!O(1),是不 ...
- css单行文本和多行文本溢出实现省略号显示
1.单行文本溢出 文本内容 <div class="singleLine"> HelloWorldHelloWorldHelloWorldHelloWorldHello ...
- Intent 对象在 Android 开发中的应用
转自(http://www.ibm.com/developerworks/cn/opensource/os-cn-android-intent/) Android 是一个开放性移动开发平台,运行在该平 ...
- Linux移植随笔:对tslib库的ts_test测试程序代码的一点分析【转】
转自:http://www.latelee.org/embedded-linux/porting-linux-tstest-code.html 本文是作者对tslib库的ts_test.c文件进行分析 ...
- pymongo的几个操作
# -*- coding: utf-8 -*- # @Time : 2018/9/11 17:16 # @Author : cxa # @File : mongotest.py # @Software ...
- 手动实现图片预览-放大缩小全屏支持IE9以上
#{extends '/Index/index.html' /} #{set title:'意见反馈' /} <script src="/public/mgr/javascripts/ ...
- OpenStack Benchmark - Rally
作为以基于OpenStack的云平台的基准测试工具 -- Rally, 其功能不仅是测试云的性能&&稳定性, 还可以安装OpenStack,以及以良好的表现形式(web 页面)展现测试 ...
- mysql高可用架构 -> MHA环境准备-02
环境准备 环境检查(三个测试节点的环境都应该是一样的,只有ip不同) [root@db01 bin]# cat /etc/redhat-release //系统版本 CentOS Linux rele ...
- netstat-ll-grep-nohup-df-supervisord
============http://man.linuxde.net/=========== 0 vi / n是查找下一个,alt+n是上一个 u撤销上一步,回到上一步 1. 根据进程号(4974) ...