ajax - 通过 Ajax 帖子处理安全保存的最佳实践 asp.net MVC 3

标签 ajax asp.net-mvc-3 security post asp.net-ajax

我正在为多个用户开发一个 Asp.Net MVC 3/knockout.js 站点,他们可以在其中保存有关其网站的信息
这是模型的简单版本

class{
string Id
string Name
string Url
string Description
}

我想构建一个响应迅速的 UI,以便所有加载保存等都将通过 Ajax 完成。

所以场景是当用户将一些网站添加到他的列表并点击保存一个 json 字符串被发布到 Controller 中的 Actionmethod 时。

一切正常。

问题是:

我如何确保用户没有篡改 id 并且实际上正在保存有关其他用户网站的信息?

id当然是隐藏的,但是任何有一些网络知识的恶人都可以很容易地改变id。

最佳答案

您应该使用身份验证。使用 Authorize 属性装饰将执行更新的操作。这将确保发送 AJAX 请求的用户通过身份验证,并且他不能更改他的用户名。然后你将检查你的数据库,如果他试图更新的站点的 id 属于他。您当然会有一个包含用户和站点之间映射的表。

如果用户篡改站点 id 并输入不属于他的站点的某些值,则在执行查询以验证给定站点 ID 是否属于给定用户名时,您在 Controller 操作中将检测到它。他不能篡改他的用户名,因为它存储在加密的身份验证 cookie 中,除非他使用不同的用户名登录,在这种情况下他已经知道密码。

关于ajax - 通过 Ajax 帖子处理安全保存的最佳实践 asp.net MVC 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8861055/

相关文章:

javascript - 使用 AJAX 在 HTML 中显示 php 结果

javascript - 使用 XMLHttpRequest 的 PHP/Mysql 查询无法检索要显示的图像

javascript - CasperJS POST AJAX 不起作用

asp.net-mvc - 如何在 MVC4 表单中编辑子对象?

asp.net-mvc - 无法在 Windows 10 中使用命令行安装网站 msi

amazon-web-services - 在 CloudFront 和 EC2 之间为 HTTPS 站点使用 HTTP

security - 如何锁定 grails spring security/cas 应用程序?

javascript - 使用 PrototypeJS 报告 Ajax 错误

ASP.Net成员(member)登录问题

flutter - 如何在不暴露 API key 的情况下保存它们?