浅析XSS与XSSI异同

这篇文章主要介绍了XSS与XSSI异同,跨站脚本(XSS)和跨站脚本包含(XSSI)之间的区别是什么?防御方法有什么不同?感兴趣的小伙伴们可以参考一下
Michael Cobb:自上世纪90年代,攻击者就已经开始利用XSS漏洞,并且,最主要的网站(例如谷歌、雅虎和Facebook)都在一定程度上受到过XSS漏洞的影响。与大多数应用层攻击(例如SQL注入),基于XSS的攻击会攻击应用的用户,而不是应用或服务器。这些攻击的工作原理是注入代码(通常例如JavaScript客户端脚本)到Web应用的输出。大部分网站有很多注入点,包括搜索域、cookies和表格。虽然这些恶意脚本不能直接感染服务器端信息,它们仍然可以破坏网站的安全性。通过使用Document Object Model操作来更改表格值,改变网页的外观或切换表格操作以张贴提交的数据到攻击者的网站,攻击者可以窃取数据、控制用户的会话、运行恶意代码或用作网络钓鱼欺诈的一部分。

XSSI是XSS的一种形式,它利用了这样一个事实,即浏览器不会阻止网页加载图像和文字等资源,这些资源通常托管在其他域和服务器。例如,脚本可能提供攻击者需要的功能,帮助创建特定的页面—很多网站包含托管在https://developers.google.com/speed/libraries/#jquery的JavaScript库jQuery。然而,这种包含可能被利用来从一个域名读取用户数据—当用户正在访问另一个域名时。例如,如果ABC银行有一个脚本用于读取用户的私人账户信息,攻击者可以在其自己的恶意网站包含这个脚本,当ABC银行的客户访问攻击者的网站时,攻击者就可以从ABC银行的服务器提取用户信息。
开发者可以部署多种措施来抵御XSSI攻击。其中一种方法是向用户提供独特的不可预测的授权令牌,在服务器响应任何请求之前,需要发送回该令牌作为额外的HTTP参数。脚本应该只能响应POST请求,这可以防止授权令牌作为GET请求中的URL参数被暴露,同时,这可以防止脚本通过脚本标签被加载。浏览器可能会重新发出GET请求,这可能会导致一个操作会执行一次以上,而重新发出的POST请求需要用户的同意。
在处理JSON请求时,在响应中增加非可执行前缀,例如“\n”,以确保脚本不可执行。在相同域名运行的脚本可以读取响应内容以及删除前缀,但在其他域名运行的脚本则不能。此外,开发者还应该避免使用JSONP(具有填充功能的JSON)来从不同域名加载机密数据,因为这会允许钓鱼网站收集数据。同时,发送响应表头“X-Content-Type-Options: nosniff”也将帮助保护IE和谷歌Chrome用户免受XSSI攻击。
为了应对XSS攻击,可在HTTP Content-Type响应表头或者HTML代码中meta标签中http-equiv属性中指定CHARSET,让浏览器不会解译其他字符集的特殊字符编码。对于使用ASP.NET开发网站的开发者,微软Anti-Cross Site Scripting Library可以帮助保护Web应用抵御跨站脚本漏洞。
现在有很多开源漏洞扫描工具可供开发者使用,以测试其代码是否容易遭受XSS攻击,例如Vega、Wapiti、OWASP的Zed Attack Proxy和Skipfish。企业应该定期对网站进行扫描,同时,在底层代码变更或依靠第三方库的功能集成到各种网页时,也应该扫描网站。
读完此文,大家应该知道两者的区别在哪了。

浅析XSS与XSSI异同的更多相关文章

  1. 浅析XSS与CSRF

    浅析XSS与CSRF 在 Web 安全方面,XSS 与 CSRF 可以说是老生常谈了. XSS XSS,即 cross site script,跨站脚本攻击,缩写原本为 CSS,但为了和层叠样式表(C ...

  2. XSS转码 && struts2 property标签的bug

    struts2: <s:property value="name" escape="false"/> EL表达式: jsp 2.0中的 ${todo ...

  3. Cross-Site Script

    Cross-Site Script(跨站脚本)XSS 整理于<浅析XSS(Cross Site Script)漏洞原理>   了解XSS的触发条件就先得从HTML(超文本标记语言)开始,我 ...

  4. Site Isolation Design Document

    This design document covers technical information about how Site Isolation is built.  For a general ...

  5. 浅析互联网系统和传统企业IT系统的异同

    前不久,一则中行宕机的消息引起了网上IT人士的热议.其中对于大型机或者RISC系统的稳定性可靠性的质疑更是热议中的主流声音,很多人拿现在互联网系统做对比,认为大型机所谓的几个9都是吹出来的云云.在这里 ...

  6. netty5 HTTP协议栈浅析与实践

      一.说在前面的话 前段时间,工作上需要做一个针对视频质量的统计分析系统,各端(PC端.移动端和 WEB端)将视频质量数据放在一个 HTTP 请求中上报到服务器,服务器对数据进行解析.分拣后从不同的 ...

  7. Java 堆内存与栈内存异同(Java Heap Memory vs Stack Memory Difference)

    --reference Java Heap Memory vs Stack Memory Difference 在数据结构中,堆和栈可以说是两种最基础的数据结构,而Java中的栈内存空间和堆内存空间有 ...

  8. [转]STUN和TURN技术浅析

    [转]STUN和TURN技术浅析 http://www.h3c.com.cn/MiniSite/Technology_Circle/Net_Reptile/The_Five/Home/Catalog/ ...

  9. XSS绕过小结

    0x00前言 我们友情进行XSS检查,偶然跳出个小弹窗,其中我们总结了一些平时可能用到的XSS插入方式,方便我们以后进行快速检查,也提供了一定的思路,其中XSS有反射.存储.DOM这三类,至于具体每个 ...

随机推荐

  1. js时间戳转换日期格式和日期计算

    一.时间戳转换日期 function formatDate(datetime) { // 获取年月日时分秒值 slice(-2)过滤掉大于10日期前面的0 var year = datetime.ge ...

  2. 修改pip源到国内的镜像源

    国内网络原因,经常无法访问一些技术网站,pypi.python.org就是其中一个.所以,使用pip给Python安装软件时,经常出现错误.like this: File "/usr/lib ...

  3. 【Java并发编程】之九:死锁

    当线程需要同时持有多个锁时,有可能产生死锁.考虑如下情形: ​ 线程A当前持有互斥所锁lock1,线程B当前持有互斥锁lock2.接下来,当线程A仍然持有lock1时,它试图获取lock2,因为线程B ...

  4. BZOJ5291 BJOI2018链上二次求和(线段树)

    用线段树对每种长度的区间维护权值和. 考虑区间[l,r]+1对长度为k的区间的贡献,显然其为Σk-max(0,k-i)-max(0,k-(n-i+1)) (i=l~r). 大力展开讨论.首先变成Σk- ...

  5. MySQL 测试工具(基准测试、压力测试)

    1.sysbench sysbench是跨平台的基准测试工具,支持多线程,支持多种数据库: 主要包括以下几种测试: cpu性能 磁盘io性能 调度程序性能 内存分配及传输速度 POSIX线程性能 数据 ...

  6. P4071 [SDOI2016]排列计数

    题目描述 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是稳定的 满足条 ...

  7. BZOJ 1898: [Zjoi2005]Swamp 沼泽鳄鱼

    1898: [Zjoi2005]Swamp 沼泽鳄鱼 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1085  Solved: 604[Submit][S ...

  8. 解题:POI 2011 Strongbox

    首先洛谷的题面十分的劝退(至少对我这个菜鸡来说是这样),我来解释一下(原来的英文题面): 有一个有若干个密码(每个密码都可以开箱子)的密码箱,密码是在$0$到$n-1$的数中的,且所有的密码都满足一个 ...

  9. Luogu 1063 能量项链(动态规划)

    Luogu 1063 能量项链(动态规划) Description 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某 ...

  10. Stamp Rally

    Stamp Rally 最大值最小,可以二分,然后并查集看能不能到z个点 但是询问过多,并且发现每次二分要加入的点并不是所有的m条边 于是就考虑整体二分 并查集的处理是重点: 对于一般的dfs分治树, ...