繁体   English   中英

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

[英]XSS with data coming from client but not saving in DB

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

问题。
用户提交某种形式(例如,在论坛上发布新主题)。 他的浏览器将数据发送到Web应用程序,Web应用程序从js代码中净化数据并将其保存到DB。 没关系。

另一种情况-用户向Web应用程序提交数据,但是他在数据中犯了一些错误,Web应用程序返回了它的数据(没有将其保存到DB),将它们放入表格中(以使用户不再履行全部任务)并显示消息错误。

问题。
我读过某处可以进行以下攻击的用户-用户遵循一些链接(外部链接),该链接重定向到我们的网站并使用js发送数据。 那么问题来了-我们应该在第二种情况下净化数据吗?

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

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

要么

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

如果数据是:

  • 更正您返回的URL进行重定向。
  • 无效,您将返回错误以显示。

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

您是指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一起提交。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM