web安全学习笔记之-脚本安全-2

xss


xss的原理是我上班后对web 安全认识的第一课,还是比较好理解的。为了防范xss,稀里糊涂的开始注意各种字符转义。

后来再了解到各种转义的用途,也踩过多转一次少转一次的坑。目前比较规范的是输入不做任何处理,输出的时候html转义,且遵循谁直接插入修改html内容,谁负责转义。


xss的概念分持久型和非持久型,区别在于攻击代码是否存在于服务器。


另外一个比较特殊的dom based的xss,其实就是页面上数据通过innerhtml变成代码的时候, 通过一些标签截断方式让页面执行用户输入的代码,也算是反射式非持久性代码的一种。


xss的攻击效果很多,因为攻击者的脚本代码可以把用户的cookie劫持走。cookie数据本来是只有同源的业务才可拿到的,但是被第三方拿到。

除了偷走cookie,还可以代替网站发起一些非预期的后台操作 例如删除数据、编辑信息等。如果后台实现了验证码、人工输入的部分,一般是配合钓鱼手法诱骗用户。

xss还用来搜集用户环境信息 浏览器、IP(依赖jre环境)、访问网站历史(css的style的visited属性)

插播了一个识别用户浏览器的手段,除了ua,还依赖一些浏览器一直的软件特性去识别。让我想起来3Q大战的时候,传说中的黄老师运用IE的icon路径来识别伪装IE的360浏览器。


XSS 蠕虫

第一个xss蠕虫是针对myspace的,网站允许用户控制标签的style属性 给了xss机会 。存储性xss容易出现蠕虫传播。


针对xss的防御对抗的案例解析:

1 字符串编码 靠编码吃掉转义字符

2 用事件代码,绕过长度限制(依赖服务器采取不合理的长度限制防御措施)

3 base标签 更改相对路径 把加载资源定位到其它地方大到目的

4 利用window.name 突破同源策略


变废为宝的案例:

apache 反射http头信息。虽然javascript不能修改http头 但是后来flash的出现有了这个能力把这个漏洞利用起来了

回旋镖: 两个独立业务 一个存在存储型xss,一个存在反射式xss,当用户同时使用两个业务的时候,就可以把反射式的xss业务种植存储型的xss。个人觉得这就是一个业务纬度的病毒传播,前提必须是在用户这里业务并存。

firefox嵌入iframe的反射xss就可以做到回旋镖

而在ie要实现一个累死formsender的跨域方式


flash xss

最简单的写法:getURL("javascript:alert(document.cookie)")

要限制一些参数来防御 :

allowScriptaccess  和html通信

allownetworking  限制外部网络通信

禁用embed object标签

xss防不胜防,即使doj yui等javascript框架都出现了信赖用户的调用参数 直接回写导致的反射式xss

XSS防御:

httponly 保护cookie,减少劫持攻击危害

输入检查

输出检查


输出检查依赖htmlencode和javascriptencode。根据不同的场合有要求

攻击代码在html标签和属性中输出 要用htmlencode

在<script>标签中输出,要确保代码在双引号中

在事件中输出 要用javascriptencode

css中输出变量,比较多样化。尽量避免这种的用法,推荐了encodeforcss函数

在url中变量 用urlencode






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值