如果用户手动键入他们无权访问的站点受保护区域的 URL,那么控制器的结果应该是什么?
- 注销用户
- 让他们访问被拒绝页面
- 给他们一个 404
- 将它们发送到主页,无需解释(或其他位置)
我已经控制了指向这些区域的链接的显示,所以我只关心这些区域的手动输入。
我意识到这可能是主观的,可能没有正确的答案,所以我正在寻找最佳实践、解释和优缺点,重点关注安全性(如果有问题)和用户体验。
如果用户手动键入他们无权访问的站点受保护区域的 URL,那么控制器的结果应该是什么?
我已经控制了指向这些区域的链接的显示,所以我只关心这些区域的手动输入。
我意识到这可能是主观的,可能没有正确的答案,所以我正在寻找最佳实践、解释和优缺点,重点关注安全性(如果有问题)和用户体验。
对我来说,我要么显示一个页面,说明他们无权访问此页面,要么我将他们重定向到主页。(第二个是我通常的选择)但是,就像你说的,答案是主观的。然而,优点和缺点是存在的。
对于注销用户,这对用户来说是非常令人沮丧的。此外,当您可以简单地显示一个说他们无权访问或只是重定向他们的页面时,这一点也没有多大意义。
显然不要让他们访问他们不应该访问的东西。这违背了安全的目的。
404 代码表示该页面未找到/不存在。当然,这是不正确的,因为该页面确实存在,只是他们没有权限。
将它们发送到主页是有效的,它应该不会对用户体验产生太大影响。
可能对用户最有利的是显示一个页面,告诉他们他们无权访问该页面。这样,他们就知道为什么他们没有到达他们想要的目的地。
再一次,这取决于你如何实现它。
请注意不要生成格式错误的 URL(或其他站点不会使用可能格式错误的 URL 重定向到您的站点(这并非不可能)),否则用户会对以下任何内容非常不满。我相信你可以算出每个人多少钱。我在同一个网站上通过时事通讯电子邮件反复发生这种情况(他们更喜欢(4))。
除了第一个之外,其他都是常见的做法。
注销用户
这可能是安全性的第一选择(用户体验的第四选择)。如果用户在弄乱 URL,他们可能正在尝试做一些恶意的事情。您可能还想给他们一个警告,记录请求并禁止同一用户继续发生这种情况。
让他们访问被拒绝页面
由于您告诉用户那里存在某些东西,因此安全性略低于(3)。
给他们一个 404
完全有道理。
将它们发送到主页,无需解释(或其他位置)
如果您在任何地方都有格式错误的 URL,这将是用户体验的首选(尽管它仍然不理想 - 它仍然会导致很多挫败感)。
在我看来,(3)和(4)在安全性方面实际上是相同的。