我正在为几个用户开发Asp.Net MVC 3 / knockout.js网站,他们可以保存有关其网站的信息 这是模型的简单版本
class{
string Id
string Name
string Url
string Description
}
我想构建一个响应迅速的UI,以便所有加载保存等都将通过Ajax完成。
所以场景是当用户将som网站添加到他的列表并点击保存时,json字符串被发布到控制器中的Action方法。
一切正常。
问题是:
如何确保用户未篡改ID并实际保存有关其他用户网站的信息?
我当然是隐藏的,但任何有网络知识的邪恶人都可以轻易改变身份。
答案 0 :(得分:2)
您应该使用身份验证。使用Authorize属性修饰将执行更新的操作。这将确保发送AJAX请求的用户经过身份验证,并且无法更改其用户名。然后,您将检查您的数据库中是否他想要更新的站点的ID属于他。您当然会有一个包含用户和站点之间映射的表。
如果用户篡改了网站ID并放置了一个不属于他的网站的某些值,那么当您执行查询以验证给定网站ID是否属于给定用户名时,您在控制器操作中会检测到它。他无法篡改用户名,因为它存储在加密的身份验证cookie中,除非他用不同的用户名登录,在这种情况下他已经知道密码。