【发布时间】:2014-09-10 05:45:05
【问题描述】:
我正在 MVC4 中开发一个 Web 应用程序。 我的应用程序的所有功能都是由 ajax post call 完成的。我什至没有发布单个表单(甚至没有表单标签)所有的事情都是由 ajax 调用完成的。但我害怕错过使用我的 java 脚本。任何获得此代码的人都可以将 虚拟数据 发布到我的应用程序中。所以我需要验证发帖请求是否来自我的网站。
我认为 ajax 调用很好,而不是将所有表单发布到服务器。
我也只在客户端进行了验证。这也是对我的威胁吗?
我如何使用 AntiXSSLibrary 和 HtmlSanitizationLibrary 或 AntiForgeryToken??
【问题讨论】:
-
如果你所有的验证都是在 JavaScript 中完成的,那么是的这是一个很大的安全问题。发布到服务器的所有数据都必须在服务器上进行验证
-
验证请求是否来自您的页面:您可以生成一个令牌,将其存储在会话中,并在您呈现页面时将其发送到隐藏字段中,并将该字段的值包含在您的 ajax 调用作为参数,当您收到提交时验证令牌参数的值并与会话中的值进行比较。
-
@jasonscript 我不明白用户如何发布错误数据
-
因为你使用 JS 将数据发布到你的服务器,所以有人可以查看你的 JS 并弄清楚要提交什么。然后他们可以编写自己的 JavaScript(在控制台中或作为 Chrome 扩展程序)并将自己的数据提交到您的服务器。如果你不检查服务器上的数据,它会接受这个bad数据。有些人甚至关闭了 JavaScript!那么你的页面会发生什么?
-
如果用户阻止了 javascript,我已经使用 ajax 发布了数据,那么将不会发生任何帖子
标签: javascript ajax asp.net-mvc-4 http-post http-post-vars