在 404 页面中建议正确的网址是不好的做法吗?

信息安全 Web应用程序 网址重定向 朦胧
2021-08-20 16:54:50

我目前正在编写一个 Web 应用程序,我的客户问我是否可以在用户不小心在 URL 栏中写错字时向他们建议一个有效的 URL,这样的示例如下所示:

  • Bob 导航到https://www.example.com/product
  • Web 服务器无法找到路由'/product',但知道路由'/product s '确实存在
  • Web 服务器建议 Bob 改为导航到/products”
  • Bob 导航到“/products”并继续浏览网站

此示例将使 Bob 获得更好的用户体验。

但是,这让我想知道这是否被认为是不好的做法,因为服务器可能会暴露网站管理员可能不想公开显示的 URL。

4个回答

如果 Bob 尝试输入产品并错误输入产品,他已经知道网站中有产品的 URL,因此您不会告诉他任何他不知道的事情。如果您不建议不应公开的 URL,则不会有任何问题。
为什么要使用 404 消息,而不是立即重定向?

但是,这让我想知道这是否被认为是不好的做法,因为服务器可能会暴露网站管理员可能不想公开显示的 URL。

  1. 这表明该功能是通过检查所有可能的有效 URL 列表(服务器可能甚至没有或无法轻松获取的列表),包括非公共 URL,并将请求的 URL 与它们进行比较来实现的。
  2. 这表明有些 URL 是秘密的。虽然可能有一些有效的用例,但一般来说,您不希望人们访问的页面不应允许他们通过猜测或知道 URL 来访问它们。但是,从用户体验的角度来看,向用户建议他们无法真正访问的 URL 可能会让用户感到烦恼。

该功能可以很容易地通过一个明确的公共页面 URL 列表来实现,它将请求的 URL 与之进行比较。如果只有一个匹配项,将用户(使用 302 Found HTTP 代码)直接重定向到正确的 URL 或搜索页面可能是合理的。如果有多个匹配项,将它们显示在一个包含 300 个多项选择 HTTP 代码的列表中可能是合理的。

我想说的是,保持 URL 的秘密并不是最好的安全做法。您可能有一些链接,无论是隐藏的还是由 Javascript 生成的,都会向任何查看它的人显示管理 URL 或任何内容。这对于我认为的 SPA(单页应用程序)应用程序来说更是如此。

我认为隐藏导航 URL 没有任何意义,如果你确定你确实做了保护这些 URL 的工作,那你很好。

我想说,开发此功能将使您更加了解这些 URL 的安全性。

我认为这里最好的答案是将必要的活动视为 301(永久)重定向。

如果您可以预见拼写错误和常见问题并在您的网络服务器配置(无论是 Apache、Nginx 还是 IIS)中发现这些问题,那么整个活动应该对用户完全透明。

在您的 Web 应用程序中,您可以添加一些额外的处理,以提醒用户如果您愿意,他们已被重定向。我已经看到这是通过一种不显眼的警报覆盖完成的,它会在几秒钟后消失。我不记得我在哪里看到的。