我只是想就我应该如何解决这个问题并最终寻求快速取胜来评估意见(思考事情的错误方式坚果时间压力意味着我必须快速思考和行动!
我得到了一个有一点问题的网站。
我使用标准表单身份验证作为 User1234 登录,我的网址如下:
www.mywebsite.co.uk/1234/Contact。
这将带我到 User1234 的详细信息。
您可以将两个和两个放在一起,并正确假设 1234 是某种用户 ID。
一旦通过身份验证,我可以访问存在 [Authorize] 属性的视图,任何匿名/未经身份验证的用户都会被重定向。
但是,一旦以 User1234 身份登录,我就可以像这样修改 url:
www.mywebsite.co.uk/1235/Contact。
所以我被认证为 User1234 但可以看到 User1235 的数据。这很糟糕,原因很明显。
当我登录时,我主动在会话中设置登录 ID,所以理论上,我可以在用户点击 ActionResult 时进行检查,我可以交叉检查 URL 中存在的 ID 与会话登录 ID。然而,这是一个包含大量操作结果的相当项目,因此,我不愿意在周六下午为每个操作结果添加一些内容。
global.asax 中是否有我可以使用的事件在每个 ActionResult 请求中被命中,我可以在其中将会话登录 ID 与 url ID 进行比较?
或者,任何人都可以就我如何实现这一点或限制 URL 篡改提供一些建议吗?