对跨站脚本攻击的全面了解 (对跨站脚本攻击的解释最准确的一项是)

教程大全 2025-07-07 23:27:26 浏览

文章主要是对跨站脚本攻击的介绍,同时,作为一个网站的访客,你是否曾经想过在访问这个自己很熟悉的一个网站时,你的私密信息已经被他人窃取?这些都是与跨站脚本攻击有关。下面让我们详细了解这类攻击。

Q1:什么是跨站脚本?

跨站脚本(Cross-site scripting,简称XSS),是一种迫使Web站点回显可执行代码的攻击技术,而这些可执行代码由攻击者提供、最终为用户浏览器加载。不同于大多数攻击(一般只涉及攻击者和受害者),XSS涉及到三方,即攻击者、客户端与网站。XSS的攻击目标是为了盗取客户端的cookie或者其他网站用于识别客户端身份的敏感信息。获取到合法用户的信息后,攻击者甚至可以假冒最终用户与网站进行交互。

XSS漏洞成因是由于动态网页的Web应用对用户提交请求参数未做充分的检查过滤,允许用户在提交的数据中掺入HTML代码(最主要的是“>”、“<”),然后未加编码地输出到第三方用户的浏览器,这些攻击者恶意提交代码会被受害用户的浏览器解释执行。

依照英文缩写习惯,简称跨站脚本为CSS。这样会引起它和另一个名词“层叠样式表”(Cascading Style Sheets,CSS)的混淆。此CSS非彼CSS。为了以示区别,一些安全人士就习惯将跨站脚本攻击简称为XSS。[2]

Q3:XSS存在哪些威胁?

攻击者可以利用XSS漏洞、借助存在漏洞的Web网站攻击其他浏览相关网页的用户,窃取用户浏览会话中诸如用户名和口令(可能包含在cookie里)的敏感信息、通过插入恶意代码对用户执行挂马攻击。XSS漏洞还可能被攻击者用于网页篡改,只是多数情况为了经济利益最大化,攻击者不会直接进行篡改。

Q4:XSS漏洞的普及率有多高?

国际Web应用安全组织WASC(Web Application Security Consortium)最新数据[4]表明,采样分析了10297个网站,其中有31.47%站点存在XSS漏洞,且XSS在发现的漏洞中占到总数的41.41%,高居榜首。

图1. 最为普及的Web应用安全漏洞[4]

Q5:能否列举XSS实例?

2005年,一位叫Samy的MySpace用户自创了一种XSS蠕虫,24小时内,其网络空间朋友数目成功从73上升到1百万。[5]

2006年,paypal遭到XSS攻击,攻击者将PayPal站点的访问者重定向到一个新的页面,上面警告用户他们的帐号已经不再安全,需要重新设置,并提示输入PayPal的登录信息、用户社保信息及信用卡信息。[6]

2008年5月,eBay承认其PayPal页面存在XSS漏洞,该漏洞会被攻击者用于盗取用户证书或cookie。[7]

Q6:攻击者如何通过XSS攻击偷取cookie?

在此,仅做举例说明,帮助读者理解XSS攻击的思路。本文中的例子来自[1]。

首先,让我们假设:存在一个网站www.vulnerableexample.com。该网站上有一个脚本welcome.cgi,参数设定为name。此脚本会读取HTTP请求的部分,然后未做任何安全性验证,就将请求内容部分或全部回显到响应页面。

通常,如果用户端发送以下请求:

GET /welcome.cgi?name=Sammi HTTP/1.0

Host: www.vulnerableexample.com

服务器 将会有如下响应:

弹出Alert窗口示例

上述机制将如何为攻击者所利用呢?我们先列举一个直观的方法。通常,攻击者会应用社会工程学(Social Engineering)设法诱骗受害者点击由攻击者精心构造的链接,如发送一封标题为“免费听林肯公园北京现场演唱会”的邮件J。

攻击者构造的恶意链接如下:

受害者一旦点击了恶意链接,会发送如下请求到www.vulnerableexample.site站点:

GET /welcome.cgi?name= HTTP/1.0

Host: www.vulnerableexample.com

站点将返回如下响应:

因为服务器端返回的HTML页面包含一段JavaScript代码,受害者浏览器会解释执行。这段代码被执行后,将被允许访问浏览器中属于www.vulnerableexample.com站点的cookie。此时,用户侧浏览器上会弹出一个alert窗口。

网站收集cookie示例

真实的攻击步骤中,这些cookie会被发送给攻击者。攻击者为此会搭建一个网站(我们称为www.attackerexample.com),还会应用一个脚本负责接收盗取的cookie。攻击者会写一段恶意代码,用于实现访问攻击者站点、并能调用接收cookie的脚本。最终,攻击者可以从www.attackerexample.com站点获取到cookie。

构造的恶意链接如下:

服务器响应内容显示为:

浏览器会加载服务器端返回页面,执行内嵌的JavaScript,并发送一个请求到www.attackerexample.com站点上的collect.cgi脚本,浏览器中保存的www.vulnerableexample.com站点的cookie值也会一起发送过去。攻击者获取到客户在www.vulnerable.site站点的cookie,还可以假冒受害者。

跨站脚本攻击Q7:加密是否能有效防护XSS攻击?

通常大家会认为如果网站使用了HTTPS,提供更有保障的安全,可以幸免于XSS攻击。其实这是一种误解。HTTPS仅提供传输层的安全,在应用层仍然面临XSS的威胁。#p#

Q8:XSS漏洞是否可能引起非法执行命令?

如果浏览器设置安全性不够时,XSS漏洞允许插入JavaScript,也就意味着攻击者可能获取受限的客户端执行权限。如果攻击者进而利用浏览器的漏洞,就有可能在客户端非法执行命令。简言之,XSS漏洞有助于进一步利用浏览器漏洞。[2]

Q9:从网站开发者角度,如何防护XSS攻击?

来自应用安全国际组织OWASP的建议[3],对XSS最佳的防护应该结合以下两种方法:验证所有输入数据,有效检测攻击;对所有输出数据进行适当的编码,以防止任何已成功注入的脚本在浏览器端运行。具体如下:

·输入验证:某个数据被接受为可被显示或存储之前,使用标准输入验证机制,验证所有输入数据的长度、类型、语法以及业务规则。

·强壮的输出编码:数据输出前,确保用户提交的数据已被正确进行entity编码,建议对所有字符进行编码而不仅局限于某个子集。

·明确指定输出的编码方式(如ISO 8859-1或 UTF 8):不要允许攻击者为你的用户选择编码方式。

·注意黑名单验证方式的局限性:仅仅查找或替换一些字符(如”<” “>”或类似”script”的关键字),很容易被XSS变种攻击绕过验证机制。

·警惕规范化错误:验证输入之前,必须进行解码及规范化以符合应用程序当前的内部表示方法。请确定应用程序对同一输入不做两次解码。

了解跨站脚本攻击Q10:从网站用户角度,如何防护XSS攻击?

这里需要再次提醒的是,XSS攻击其实伴随着社会工程学的成功应用,需要增强安全意识,只信任值得信任的站点或内容。

Q11:如果修补XSS漏洞对网站来说困难较大,不修补会怎样?

对跨站脚本攻击的全面了解

如果不能及时修补XSS漏洞,网站可能成为攻击者攻击第三方的媒介,公信度受损;网站用户成为受害者,敏感信息泄漏。现实中,确实存在某些无法修补漏洞的客观原因,如Web应用开发年代久远或者整改代码需要付出过于高昂的代价。这种情况下, 选择Web安全网关会是一种合理选择。正确应用这类安全工具,会极大缓解XSS攻击,降低安全风险。

Q12:下一代XSS会是怎样的?

随着AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML)技术的普遍应用,XSS的攻击危害将被放大。使用AJAX的最大优点,就是可以不用更新整个页面来维护数据,Web应用可以更迅速地响应用户请求。AJAX会处理来自Web服务器及源自第三方的丰富信息,这对XSS攻击提供了良好的机会。AJAX应用架构会泄漏更多应用的细节,如函数和变量名称、函数参数及返回类型、数据类型及有效范围等。AJAX应用架构还有着较传统架构更多的应用输入,这就增加了可被攻击的点。

【编辑推荐】


jsp 如何 xss 防范

1、antisamy插件防止XSS跨站脚本攻击,很简单,很方便,建议参考。 2、写一个Filter,对产生跨站的关键字进行过滤。

金山好还是瑞星好?

金山好,不过卡巴斯基更好。

卡巴斯基反病毒软件2010与微软MSN合作,每位MSN用户均可免费领取卡巴斯基杀毒软件2010激活码key半年。 有了卡巴2010杀毒软件,将实时自动保护您全家的上网安全-无论您是工作,使用网银,在线购物还是网络游戏,完整的组件将为您上网冲浪保驾护航。

最新卡巴斯基反病毒软件2010亮点和强化功能

卡巴斯基反病毒软件所使用的独一无二的保护技术将全面提升程序功能,您可以根据需要轻松自定义设置各项保护功能:

·卡巴斯基工具栏在浏览器中嵌入卡巴斯基工具栏将过滤危险网站。

·基本的隐私数据保护如虚拟键盘保护功能更强大。

·紧急检测系统能够实时阻止快速传播的各种威胁。

·新一代的主动防御技术可以更好的防御零日攻击和未知威胁。

·紧急检测系统能够实时阻止快速传播的各种威胁。

·贴心设计的游戏模式玩家玩游戏时程序将暂停更新、扫描等任务以避免打扰玩家。

免费领取卡巴斯基2010免费激活码key半年地址:

cookie和session的的区别以及应用场景有哪些

cookie和session的区别如下:1、session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息。 2、session中保存的是对象,cookie中保存的是字符串。 3、session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。 而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。 4、session需要借助cookie才能正常工作。 如果客户端完全禁止cookie,session将失效。 应用场景如下就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客户,session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出cookie, cookies和session cookie的区别了,网上那些关于两者安全性的讨论也就一目了然了,session cookie针对某一次会话而言,会话结束session cookie也就随着消失了,而persistent cookie只是存在于客户端硬盘上的一段文本(通常是加密的),而且可能会遭到cookie欺骗以及针对cookie的跨站脚本攻击,自然不如 session cookie安全了。 3.通常session cookie是不能跨窗口使用的,当新开了一个浏览器窗口进入相同页面时,系统会赋予一个新的sessionid,这样信息共享的目的就达不到了,可以先把sessionid保存在persistent cookie中,然后在新窗口中读出来,就可以得到上一个窗口SessionID了,这样通过session cookie和persistent cookie的结合就实现了跨窗口的session tracking(会话跟踪)。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐