本文简单的介绍如何在HTML文档中进行跨站点脚本(XSS)攻击在以及并避免跨站攻击出现的通用方法。
如果你不了解什么是跨站攻击,可以查看跨站攻击介绍。
本文提供的跨站脚本攻击的例子独立于任何特定的模版或者程序。
翻译自:原文出处 VER:Updated Oct 14, 2011 by ivan@ludios.org
举个例子,这里有一个HTML片段:
<title>Example document: %(title)</title>
那么,如果这个变量值得被进行跨站攻击,那么它最后的结果可能是这样。
<title>Example document: Cross-Site Scripting</title>
脚本一般是基于JavaScript (ECMAScript)
,当然,也可以使用其他的脚本语言,只要它支持被攻击者的浏览器,比如VBScript
。
- 针对被攻击的页面,下面的内容包括(这里假设已经被攻击,比如文档body内部,或者a标签的
href
属性) - 一个简单的例子,说明如何利用注射漏洞,即攻击者可以将攻击脚本注入HTML文档中,并执行该攻击脚本。
- 简单的指导,避免特别的关键词出现在上下文中,比如
escape
这类关键词。
解释为什么要这么做,如何防止XSS出现。
扩展阅读:
- Introduction to Cross-Site Scripting Vulnerabilities
- Compartmentalizing applications within the same domain
- HOWTO filter user input in regular body text
- HOWTO filter user input in tag attributes
- HOWTO filter user input in URL attributes
- HOWTO filter user input in style elements and attributes
- HOWTO filter user input in JavaScript context
- HOWTO filter user input in JavaScript event handlers
- HOWTO filter user input in HTTP headers
- HOWTO protect against malicious images and other non-HTML content
- HOWTO serve untrusted files as downloads
- XSS事项 UTF-7: 消失的字符集
- Malformed UTF-8: who said “hello%EE” can’t be dangerous