我正在观看教程,导师在仅限GET请求的应用上放置了一个XSS过滤器。
我对跨站点脚本的理解是使用POST和GET。 “黑客”将脚本发布到服务器,当您的Web应用程序发出GET请求时,它会收到该脚本,并且当脚本数据加载到页面时,浏览器会运行该脚本。
这会影响查看收到数据(脚本)的页面的所有用户。
如果您拥有并且只有GET请求网络应用程序,您会如何变得脆弱?
答案 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>">
......而且漏洞很明显。