部分注意事项如下: [1] 虽然受攻击的 Web 站点涉入其中,但它没有直接受害。它被用作攻击者发送的恶意脚本的“跳板”,用来以合法身份返回受害者的浏览器。不过,由于受害者的隐私是在特定站点的上下文中受到侵害,并且由于站点有直接责任,因此,这将视为站点的安全缺陷。 [2] 如果受害的用户所访问的站点由攻击者来维护,攻击者便可以使用 Web 站点链接来提供恶意的链接。如果攻击者知道用户的电子邮件地址,且用户的电子邮件客户端使用浏览器来呈现 HTML 消息,恶意的链接也可以由电子邮件来提供。 [3] 用户输入在表单字段值(即 URL 参数)中最常见,但也有已知的攻击将恶意的代码嵌入路径、查询,或 HTTP Referrer 头中,甚至是嵌入 Cookie 中。 [4] AppScan 会发送许多类型的“跨站点脚本编制”攻击,其中包括只作用于特定浏览器或浏览器版本的攻击。AppScan 的“在浏览器中显示”功能使用 Internet Explorer 来显示漏洞。对于不易侵害 Internet Explorer 而易侵害其他浏览器的变体来说,“在浏览器中显示”功能无法运作,且不会出现弹出窗口。
将输入发送给很容易受到跨站点脚本编制攻击的 Web 应用程序,有两种可能的方案: A. 在响应页面中,返回发送给 CGI 脚本的参数值,嵌入在 HTML 中。 例如:[请求] GET /cgi-bin/script.pl?name=JSmith HTTP/1.0
[响应] HTTP/1.1 200 OK Server: SomeServer Date: Sun, 01 Jan 2002 00:31:19 GMT Content-Type: text/html Accept-Ranges: bytes Content-Length: 27
Hello JSmith
B. 在 HTML 参数值上下文中,返回发送给 CGI 脚本的参数值。 例如:[请求] GET /cgi-bin/script.pl?name=JSmith HTTP/1.0
[响应] HTTP/1.1 200 OK Server: SomeServer Date: Sun, 01 Jan 2002 00:31:19 GMT Content-Type: text/html Accept-Ranges: bytes Content-Length: 254
Please fill in your zip code:
示例 1 - 方案 A 下列请求由用户发送:
[攻击请求] GET /cgi-bin/script.pl?name=>"'>
[攻击响应方案 A] HTTP/1.1 200 OK Server: SomeServer Date: Sun, 01 Jan 2002 00:31:19 GMT Content-Type: text/html Accept-Ranges: bytes Content-Length: 83
Hello >"'>
在这种情况下,浏览器会执行 JavaScript 代码(>"'> 部分在这里不相关)。
示例 2 - 方案 B 使用与示例 1 相同的脚本和输入来引起攻击:
[攻击响应方案 B] HTTP/1.1 200 OK Server: SomeServer Date: Sun, 01 Jan 2002 00:31:19 GMT Content-Type: text/html Accept-Ranges: bytes Content-Length: 310