通过Ajax发布安全保存的最佳实践发布了asp.net MVC 3

Kim*_*mpo 5 security ajax post asp.net-ajax asp.net-mvc-3

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

class{
string Id
string Name
string Url
string Description
}
Run Code Online (Sandbox Code Playgroud)

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

所以场景是当用户将som网站添加到他的列表并点击保存时,json字符串被发布到控制器中的Action方法.

一切正常.

问题是:

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

我当然是隐藏的,但任何具有一些网络知识的邪恶的人都可以轻易地改变身份.

Dar*_*rov 2

您应该使用身份验证。使用 Authorize 属性修饰将执行更新的操作。这将确保发送 AJAX 请求的用户经过身份验证,并且他无法更改其用户名。然后你将检查你的数据库,他试图更新的站点的ID是否属于他。当然,您将拥有一个包含用户和站点之间的映射的表。

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