我知道MVC中的默认路由包括一个id param,它经常映射到存储在数据库中的实体的标识。现在,这通常是可以的,但是当你不希望某人能够操纵它时呢?坦率地说,在许多商业应用程序中,这是非常常见的。例如,出于显而易见的原因,您不希望有人在URL中更改帐号(不是最好的示例,但是您明白了)。因此,您需要在每个请求中针对登录用户验证帐号。显然,这不是一个现实的解决方案,在webforms中很多人会在会话中存储类似的内容。我试图在MVC中很少依赖会话,但除此之外我会去老学校并使用隐藏的字段吗?
其他人如何处理这个问题?
答案 0 :(得分:1)
实际上,为了获得良好的安全性,您仍然必须在每个请求上验证经过身份验证的用户权限。您可以扩展Authorize
属性以更好地满足您的需求。
隐藏字段比url参数稍微好一些,因为它们可以通过使用IE开发人员工具或Firebug轻松更改。
答案 1 :(得分:0)
在我工作的一个地方处理的方法是检查Request对象中的referrer。如果推荐人在当前域中是空白或不是,请不要向他们显示页面。
Request.UrlReferrer
它实际上运作得很好。