Protect Against Cross Site Scripting (XSS) Attacks

对XSS攻击不是很了解,借翻译的机会也学习一下。文章属于综述,没有讲原理和示例。翻译得有点生硬,有几个词这么翻译的:sanitize 处理, reputation 信用评级,也不知道是否准确。
文章来源:NSA Creative Imaging – 52957 (Web),2011.9.  The Information Assurance Mission at NSA.
跨站脚本
    网络应用的一种漏洞,允许攻击者往网页中注入恶意HTML(一般包含JavaScript)。XSS是服务器代码和用户输入共同作用的后果。如果用户输入没有被合理处理,一些恶意代码会和服务器代码一起在客户端浏览器上运行。2010年,XSS被OWASP评为排名第二的web应用安全风险,被SANS协会评为排名第一的软件错误。
    XSS主要有两种类型:反射型(reflected,非持久化)和存储型(stored,持久的),在反射型XSS攻击中,攻击者诱导用户点击一个特别构造的链接,向漏洞web服务器发起一个请求。这使得攻击者可以在用户web浏览器上运行任意代码。在反射型攻击中,攻击者必须单独地攻击每个目标。
    在存储型攻击中,攻击者将代码嵌入到存储在服务器上的网页或其他数据中,访问这些网页的所有浏览器都会执行这些代码。因为一次性可攻击多个用户,存储型攻击通常被认为比反射型更危险。
    XSS危害程度严重,典型的XSS载荷包括重定向到钓鱼网站、记录口令、窃取会话、散布恶意软件、浏览器自动化和将载荷转到内网发起更多攻击的能力。
用户
    用户可以采取很多措施来抵御XSS攻击。除了上网时的常识(不点击未知来源发送的链接,完成后就关闭会话),用户应该考虑一下其他措施。
限制不可信的JavaScript允许所有的JS运行会使用户可能遭受XSS攻击,防御XSS最有效的方法是仅允许运行来自于明确信任的域的JS。这里推荐安装一个实现了白名单的浏览器插件,比如火狐的NoScript插件。IE用户可以通过配置信任站点和受限站点实现白名单机制。
使用内置的浏览器保护一些浏览器开始支持XSS保护,比如IE 8包括了一个XSS过滤器和SmartScreen筛选器,使用信用评级来抵御恶意网站。这些额外的安全措施在可用时应该打开。
限制外部网站请求内部资源:允许外部网站通过浏览器访问内部资源,攻击者可以将攻击转到有漏洞的内部网站。NoScript有个特性叫应用边界执行模块(ABE),可以配置为禁止外部网站请求内部资源。
保持良好的系统卫生:保持系统和应用更新和打补丁很重要,可以抵御恶意软件,配置安全。更多细节请阅读NSA指南: Best Practices for Securing a Home Network  和 Mitigation Monday #2: Defense Against Drive-By Downloads.
开发者
    去除XSS漏洞最有效的方法是让开发者明白XSS攻击的危险,使用工具创建安全web应用而不影响开发。OWSAP的XSS防骗小册子上,有很多关于XSS攻击与如何安全处理用户输入的有用信息,此外也有工具可以帮助开发者在不需要很多额外开销的情况下开发出安全的web应用。
白名单vs.黑名单:为了帮助减少XSS攻击,有两种用于处理数据的基本技术。黑名单使用一组已知为恶意的数据列表来阻止不合法的内容被执行,白名单使用一组已知为良性的数据,仅允许执行那些内容。黑名单模式建立起来更快,但是更容易被一个老练的攻击者绕过。白名单安全方案更强,但学习起来很不容易,一旦掌握了对阻止XSS攻击非常有效。
OWASP企业安全API(ESAPI):ESAPI库是一组安全处理用户输入的方法实现,包括白名单。一些现代编程语言已经可用,如Java EE,PHP,.NET,Cold Fusion,Python等。ESAPI库需要开发者知道哪个方法易受XSS攻击,并将它们替换为安全的实现。
微软AntiXSS库:微软AntiXSS库将ASP.NET中已有的处理用户输入方法替换为安全处理的新方法。AntiXSS库使用白名单过滤内容。AntiXSS库还包括一个可包含在项目中的DLL,用于hook所有可能不安全的调用,将其替换为安全的方法。
web漏洞扫描程序:有很多扫描网站XSS漏洞的工具或服务,这些工具或服务抓取网站,检查处理用户输入的代码是否易受XSS攻击。这些工具虽不能找到所有的XSS漏洞,但至少可以找到那些容易的。
客户端/服务器协作
    另一个减少XSS攻击的方法,是让web应用和客户端浏览器协作,把用户提供的数据和web应用的HTML隔离开。
内容安全策略CSP :CSP是一种客户端/服务器技术标准,第一个实现是在火狐4中。CSP中,网站管理员将脚本和网站其他内容(放进一个源文件)隔离开,将浏览器可信的域作为有效脚本源放在白名单中。浏览器遇到的任何其他脚本都先假定来自于XSS攻击。浏览器获取并使用这个服务器信息,判定是否应该运行给定的脚本。
网络管理员
    电脑配置和web应用代码的修改通常不在网络管理员的控制内,虽然仅靠网络设备保护企业抵御XSS攻击比较困难,有些技术仍然有所帮助。
WhiteTrash squid网页代理插件:WhiteTrash是squid代理的一个插件,功能和NoScript类似。使用白名单,只接受来自于明确可信域的脚本。WhiteTrash的企业管理比NoScript容易,因为白名单可以在企业web流量必须经过的少数代理上进行管理。
web应用防火墙WAF:WAF是一种入侵检测/预防技术,专门观察和解析HTTP流量。WAF可以位于网络的任何位置,只需要能够查看未加密的HTTP流量。WAF可以检查入站和出站的HTTP流量从而发现漏洞,可以运行在黑名单模式或是白名单模式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值