XSS构造技巧

利用字符编码:

var redirectUrl="\";alert(/XSS/);";

本身没有XSS漏洞,但由于返回页面是GBK/GB2312编码的“%c1\”成为了一个Unicode字符,忽略掉转义字符\

%c1";alert(/XSS/);//

绕过长度限制:

很多时候产生XSS的地方会有变量长度限制,将代码藏在location.hash中,然后在其他地方调用即可

http://www.a.com/test.html#alert(1)

<input type="text" value="" onclick="eval(location.hash.substr(1))"/>//去掉第一个字符#

用户点击文本框时触发playload

某些环境下,可以利用注释符绕过长度限制

<input id=1 type="text" value=""/>

XXXXXXXXXXXXXX

<input id=2 type="text" value=""/>

第一个文本框输入"><!--

第二个文本框输入--><script>...</script>

将中间的代码注释掉

使用<base>标签:

它的作用是定义页面上的所有使用“相对路径”标签的hosting地址

比如<img src="/intl/en_ALL/logon.png"/>

可以设置

<base href="http://www.google.com"/>

在技术文档中,提到<base>标签只能用于<head>标签内,实际上<base>可以出现在页面的任何地方,并作用于该标签之后的所有标签,XSS可以劫持所有使用相对地址的标签

window.name:window.name对象是没有特殊字符的限制,由于window对象是浏览器的窗体,并非document对象,很多时候window对象不受同源策略的限制,可以实现跨域、跨页面传递数据

在同一窗口www.a.com/test.html中为window.name赋值,跳转到www.b.com/test.html中后window.name的值依然是之前页面的赋值

可以eval(window.name)

之前讲的都是基于HTML的XSS攻击,在Flash中同样可以造成XSS攻击,ActionScript脚本非常强大灵活,甚至可以发起网络连接,在实现XSS Filter时,禁用<embed><object>等标签,如果一定要使用的话,可以将视频转码为flv文件,flv是静态文件,不会产生安全隐患,或者配置相关信息,禁止Flash与页面进行通信

JavaScript框架也会存在一些XSS漏洞

XSS防御:浏览器禁止页面的JavaScript访问带有HttpOnly属性的Cookie;输入检查是否携带非法字符;输出检查,将字符编码和转义如<编码为&lt;

如果网站使用了MVC架构,那么XSS就发生在View层——在应用拼接变量到HTML页面时产生

第4章  跨站点请求伪造(CSRF)

CSRF全名是Cross Site Request Forgery,就是跨站点请求伪造

诱使用户访问一个页面(调用Cookie),就以该用户身份在第三方站点里执行了一次操作

浏览器所持有的Cookie分两种,一种是“Session Cookie”,又称“临时Cookie”;另一种是“Third-party Cookie”,也称“本地Cookie”

Third-party Cookie是服务器在Set-Cookie时指定Expire时间,只有到了Expire时间后,Cookie才会失效(保存在本地),Session Cookie未指定Expire时间,浏览器关闭则失效(保持在浏览器进程的内存空间)

CSRF防御:

验证码

Referer Check最常见的应用是“防止图片盗链”,可以检查请求是否来自合法的“源”

CSRF的本质是攻击者可以猜测到重要操作的参数,如果参数进行加密或者使用随机数

第5章 点击劫持(ClickJacking)


点击劫持是一种视觉欺骗手段,攻击者使用一个透明的、不可见的iframe,覆盖在网页上(控制iframe的长宽,调整top、left的位置,设置透明度为0)

通常可以写一段JavaScript代码,禁止iframe的嵌套,这种方法叫frame busting

if(top.location!=location){

top.location=self.location;  //防止当前页面被嵌套在其他iframe中

}

第6章 HTML5安全

HTML5为<iframe>标签定义了一个新属性sandbox,定义新属性之后<iframe>标签加载的内容将被视为一个独立的“源”(同源策略);

HTML5为<a>、<area>定义了一个新的Link Types:noreferrer

<a href="xxx" rel="noreferrer">test</a>  //不再发送Referer,保护隐私信息

同源策略给Web开发者带来很多问题,由此诞生jsonp、iframe跨域等技巧

HTML5定制了新API:postMessage,它允许每一个window(包括当前窗口、弹出窗口、iframes等)对象往其他窗口发送文本消息,实现跨窗口的消息传递,这个功能不受同源策略限制

在窗口的window对象上调用window.postMessage(document.getElementById("...").value);

另一个窗口监听document.addEventListener("message",function(e){...},false);

Web Storage:

在Web Storage出现以前,浏览器里存储信息方式有Cookie(只包含基本信息)、Flash Shared Object(Adobe公司)、IE UserData(微软公司)

W3C委员会希望在客户端有一个较为强大的本地存储功能,就是Web Storage,它分为Session Storage(关闭浏览器就会失效)和Local Storage(一直存在)

Web Storage就像一个非关系型数据库,由Key-Value对组成

window.sessionStorage.setItem(key,value);  //设置

window.sessionStorage.getItem(key);  //读取

Web Storage也受同源策略约束,每个域所拥有的信息只会保存在自己的域下,其他域访问得到null

白帽子讲Web安全2.pdf的更多相关文章

  1. 白帽子讲Web安全1.pdf

    第一章 我的安全世界观 安全是一个持续过程 6种威胁:Spoofing(伪装).Tampering(篡改).Repudiation(抵赖).InformationDisclosure(信息泄漏).De ...

  2. 《白帽子讲Web安全》- 学习笔记

    一.为何要了解Web安全 最近加入新公司后,公司的官网突然被Google标记为了不安全的诈骗网站,一时间我们信息技术部门成为了众矢之的,虽然老官网并不是我们开发的(因为开发老官网的前辈们全都跑路了). ...

  3. 读>>>>白帽子讲Web安全<<<<摘要→我推荐的一本书→1

      <白帽子讲Web安全>吴翰清著 刚开始看这本书就被这本书吸引,感觉挺不错,给大家推荐下,最近读这本书,感觉不错的精华就记录下, 俗话说>>>好脑袋不如一个烂笔头< ...

  4. 白帽子讲web安全——认证与会话管理

    在看白帽子讲web安全,刚好看到认证与会话管理:也就是我们在平常渗透测试中遇到最多的登录页面,也即是用户名和密码认证方式,这是最常见的认证方式. 了解两个概念:认证和授权 1):认证的目的是为了认出用 ...

  5. 白帽子讲web安全读后感

    又是厚厚的一本书,为了不弄虚做假,只得变更计划,这一次调整为读前三章,安全世界观,浏览器安全和xss.其它待用到时再专门深入学习. 吴翰清是本书作者,icon是一个刺字,圈内人称道哥.曾供职于阿里,后 ...

  6. 白帽子讲web安全——一个安全解决方案的诞生细节

    1.白帽子:做安全的人.主要做的事,防御,是制定一套解决攻击的方案.而不是只是解决某个漏洞. 2.黑帽子:现在说的黑客.让web变的不安全的人.利用漏洞获取特权.主要做的事,攻击,组合各种方法利用漏洞 ...

  7. 读书笔记——吴翰清《白帽子讲Web安全》

    目录 第一篇 世界观安全 一 我的安全世界观 第二篇 客户端脚本安全 一 浏览器安全二 跨站脚本攻击(XSS)三 跨站点请求伪造(CSRF)四 点击劫持(ClickJacking)五 HTML5 安全 ...

  8. 白帽子讲web安全——白帽子兵法(设计安全方案中的技巧)

    1.Secure By Default原则 白名单:筛选出被允许的,屏蔽其他. 黑名单:屏蔽可能造成的威胁. 2.XSS和SSH XSS攻击:跨站脚本(cross site script)攻击是指恶意 ...

  9. 《白帽子讲web安全》——吴瀚清 阅读笔记

    浏览器安全 同源策略:浏览器的同源策略限制了不同来源的“document”或脚本,对当前的“document”读取或设置某些属性.是浏览器安全的基础,即限制不同域的网址脚本交互     <scr ...

随机推荐

  1. c语言中继承和多态的简单实现

    C语言本身是不支持继承和多态的,但其实在 C 的世界里,有一套非常有名的面向对象的框架,用的也非常广,那就是 GObject,它是整个图形界面开发库 GTK 的基石,在IBM developerWor ...

  2. 嵌入Web资源的方法

    可以将js .图片.css等嵌入Assembly中,这样就不用将文件在aspx中写了,特别适合做自定义控件的时候将控件用到的资源打包. 将文件放到项目的合适路径,比如jpg文件所在路径的namespa ...

  3. Jquery 动态生成表单 并将表单数据 批量通过Ajax插入到数据库

    利用Jquery 动态生成 Table 表单 之后利用each 方法来遍历所有文本框获取文本的value值  并通过Ajax 将数据 提交到Web服务里把数据插入数据库 Html页面 <!DOC ...

  4. ubuntu thinkphp pathinfo 404等问题

    这个问题 困扰了我一天,由于对nginx的配置文件中的各种变量不懂.配置起来很麻烦,从网上搜索的,感觉合适自己的不多!!! 找啊找啊..终于找一篇!!!! 我的环境: php ubuntu 12.04 ...

  5. python实现雅虎拍卖后台自动回复卖家消息

    前些时间,公司让做一个自动回复卖家信息的程序,现在总结下(用python实现的) 1.登陆雅虎拍卖后台手动获取cookie文件 #coding=utf-8 import sqlite3 import ...

  6. 如何使用KMS激活win10和office

    首先你需要下载一个kms软件,地址: https://yunpan.cn/cRxVNy2LRXjBt (提取码:d5d8) 然后搭建kms服务器,很简单.启动软件,选择“附加”Tab, 点连接到服务器 ...

  7. caffe之(一)卷积层

    在caffe中,网络的结构由prototxt文件中给出,由一些列的Layer(层)组成,常用的层如:数据加载层.卷积操作层.pooling层.非线性变换层.内积运算层.归一化层.损失计算层等:本篇主要 ...

  8. javascript第二遍基础学习笔记(二)

    一.操作符 1.一元操作符: 自加自减(分前置和后置2种):++.-- 区别:前置的先自加或自减,后进行计算:而后置的是先进行计算,后自加或自减(在其会产生负面影响时才能体现区别): ; i++; / ...

  9. java 资料收集

    java中线程队列BlockingQueue的用法 为什么jdk中把String类设计成final? 深入浅出单实例Singleton设计模式

  10. phpstorm 强大的活动模板 可以自定义注释,代码段,根据cms订制自动提示

    http://jingyan.baidu.com/article/8275fc86badd6346a03cf6aa.html [PHP] phpstorm的使用(1) http://v.youku.c ...