XSS,数据来自客户端但不保存在DB中

时间:2015-02-02 17:04:17

标签: javascript xss

也许这是一个简单的问题,但我想与其他专家讨论。

问题。
用户提交一些表单(例如在论坛上发布新帖子)。他的浏览器将数据发送到Web应用程序,Web应用程序从js代码中纯化数据并将其保存到DB。没关系。

另一种情况 - 用户向Web应用程序提交数据,但他在数据中出现一些错误并且Web应用程序返回其数据(不将其保存到DB),将它们放入表单中(以便用户不再完成所有操作)并显示消息错误。

问题。
我已经读过某个地方可以进行以下攻击 - 用户按照一些链接(外部链接)重定向到我们的网站并随js一起发送数据。所以问题 - 我们应该在第二种情况下净化数据吗?

2 个答案:

答案 0 :(得分:0)

您所要做的就是通过AJAX提交表单。

$("#myForm").ajaxForm({url: 'server.php', type: 'post'})

$("#myForm").ajaxSubmit({url: 'server.php', type: 'post'})

如果数据是:

  • 更正您返回的网址以重定向。
  • 无效,您将返回要显示的错误。

无需其他功能,例如"净化数据"。

答案 1 :(得分:0)

您的意思是CSRF攻击(跨站请求伪造)吗?

如果您的网站有表单,请说明这是example.com

<form method="post" action="/postThread.php">

攻击者可以在其网站上包含类似的表单:

<form method="post" action="https://example.com/postThread.php">

并诱使受害者访问他们的网站,同时他们也登录example.com

他们可以包含一些JavaScript来提交表单(通过提交HTML表单,可能在IFrame中加载或通过AJAX加载)。最终结果是,攻击者将以受害者的身份在您的网站上启动该主题,因为受害者的cookie将随POST一起提交。

防止这种情况的一种快速方法是设置并检查X-Requested-With标头,如果所有POST都是通过AJAX完成的。如果没有,您可能需要查看推荐的OWASP Synchronizer Token Pattern