XSS攻击只发生在GET和POST请求中吗?

时间:2017-11-22 21:53:06

标签: javascript security xss

我正在观看教程,导师在仅限GET请求的应用上放置了一个XSS过滤器。

我对跨站点脚本的理解是使用POST和GET。 “黑客”将脚本发布到服务器,当您的Web应用程序发出GET请求时,它会收到该脚本,并且当脚本数据加载到页面时,浏览器会运行该脚本。

这会影响查看收到数据(脚本)的页面的所有用户。

如果您拥有并且只有GET请求网络应用程序,您会如何变得脆弱?

1 个答案:

答案 0 :(得分:3)

你似乎在这里有几个误解。

只有POST请求才能导致服务器存储数据 - false

虽然HTTP规范要求GET请求是安全且幂等的,但是编写违反此规则的服务器端代码很容易。

只有GET请求才能从服务器获取数据 - false

大多数HTTP请求都可以有一个响应,其中包含一个供客户端呈现的主体。

虽然使用Post-Redirect-Get模式通常是个好主意,但这不是必需的,也不是最好的方法。 POST请求可以有一个在浏览器中呈现的响应。

需要存储数据以导致XSS漏洞 - false

许多XSS攻击都是Reflected形式,输入直接在响应中回显。

让我们采用像谷歌这样的搜索引擎的天真实现。

执行搜索时,搜索字词会显示在页面顶部的输入元素中,以便您对其进行修改并进行新搜索。

<input name="q" value="<?php echo $_GET['q'];">

现在让我们将XSS攻击作为搜索字符串。

http://example.com/?q="><script>alert("XSS");</script>

它在页面上呈现为:

<input name="q" value=""><script>alert("XSS");</script>">

......而且漏洞很明显。