使用Ajax获取XSS攻击预防& POST请求

时间:2017-02-02 05:02:32

标签: html ajax xss

我对防止XSS漏洞的了解很少,特别是对于表单输入而言,不允许使用像<,>这样的特殊字符。但是,我的问题是Ajax:

  • 获取请求:如何有效地阻止查询字符串参数。

  • POST请求:通过POST请求发送的数据是否仍然是XSS攻击的原因或POST请求阻止XSS攻击。

请帮助我理解这一点。

1 个答案:

答案 0 :(得分:2)

你必须要了解的关于XSS的第一件事是它针对的是浏览器,而不是服务器。如果在GET或POST请求中注入了标记,则这与服务器无关。只关注您如何将数据呈现给用户。

假设您在数据库中有一个字段,其中的内容是用户生成的输入。在向任何观看者展示这些数据时,过滤它以获取HTML标签,或者在存储之前对其进行过滤,顺序并不重要。

然而,你似乎没有想象出这种不同形式的XSS攻击。外部站点向您的URL生成URL和POST请求。这是合法的,必须加以处理,以防止像changepassword.php?newpass=hacked这样的事情(粗略的例子)。与此相当的POST也是可能的。

许多网站所做的是生成通常所称的" postkey",一个随机值或短语,它生成并绑定到用户的当前会话并附加到所有POST和GET调用修改信息,可以是查询字符串变量(GET)的形式,也可以是表单中的隐藏字段(POST)。所有重要的POST和GET都应该包含它以进行验证。

外部攻击者无法知道密钥是什么,因为他们无法做到"跨站点阅读"在成功进行XSS攻击之前,任何向您的网站提交POST或GET请求的尝试都将丢失此密钥,并且应该是无害的。

相关问题