web-dev-qa-db-ja.com

404ページで正しいURLを提案することは悪い習慣ですか?

私は現在Webアプリケーションを作成していて、クライアントが誤ってURLバーにタイプミスを書いたときにユーザーに有効なURLを提案できるかどうか尋ねられました。この例は次のようになります。

  • ボブは ' https://www.example.com/product 'に移動します
  • Webサーバーはルート '/ product'を見つけることができませんが、ルート '/ productであることを認識していますs 'は存在します
  • Webサーバーはボブに代わりに '/ products'に移動するように提案します
  • ボブは「/製品」に移動し、ウェブサイトを閲覧し続けます

この例では、Bobのユーザーエクスペリエンスが向上します。

ただし、サーバーがURLを公開している可能性があるため、これは悪い習慣と見なされているのではないかと思いました。

43
Paradoxis

ボブが商品をタイプしようとして、商品のタイプを間違えようとしている場合、ボブは商品のWebサイトにURLがあることをすでに知っているので、知らないことは何も伝えていません。公開すべきでないURLを提案しない場合、問題はありません。
なぜ404メッセージを使用し、すぐにリダイレクトしないのですか?

62
David Glickman

ただし、サーバーがURLを公開している可能性があるため、これは悪い習慣と見なされているのではないかと思いました。

  1. これは、すべての有効な有効なURLのリスト(サーバーが持っていない、または簡単に取得できる可能性のあるリスト)をチェックし、非公開のURLを含めて、要求されたURLとそれらを比較することによって機能が実装されることを示唆しています。
  2. これは、秘密のURLがあることを示唆しています。 一般的にのいくつかの有効な使用例があるかもしれませんが、ユーザーにアクセスさせたくないページは、URLを推測または知っていることによって、それらにアクセスすることを許可しないでください。ただし、ユーザーエクスペリエンスの観点からは、実際にはアクセスできないというURLをユーザーに提案するのはユーザーにとって煩わしいかもしれません。

この機能は、要求されたURLと比較するパブリックページのURLの明示的なリストを用意することで簡単に実装できます。 might一致が1つしかない場合は、ユーザーを(302 Found HTTPコードを使用して)適切なURLまたは検索ページに直接リダイレクトするのが妥当です。一致するものが複数ある場合は、300 Multiple Choices HTTPコードを含むリストでそれらを提示するのが妥当かもしれません。

13
Random832

URLを秘密にしておくことは、実際には最良のセキュリティ慣行とは言えません。隠されているか、JavaScriptによって生成されたかに関係なく、管理URLなどを表示するリンクが表示される場合があります。これは、私が考えるSPA(単一ページアプリケーション)アプリケーションの場合はさらに当てはまります。

ナビゲーションのURLを非表示にしても意味がないと思います。これらのURLを保護するための作業を確実に行っていれば、問題ありません。

この機能を開発することで、これらのURLのセキュリティをより意識するようになると思います。

12
Walfrat

ここでの最良の答えは、必要なアクティビティを301(永続的な)リダイレクトとして扱うことです。

スペルミスや一般的な問題を予測し、それらをWebサーバー構成(Apache、Nginx、IISのいずれか)でキャッチできる場合、アクティビティ全体がユーザーに対して完全に透過的である必要があります。

Webアプリケーションでは、必要に応じてリダイレクトされていることをユーザーに警告するための追加の処理を追加できます。私はこれが、数秒後に消える一種の控えめな警告オーバーレイで行われたのを見てきました。どこで見たのか思い出せない。

3
Chris Giddings

提案として提供するURLを決定するために使用するスクリプトでは、管理URLを除外してください。

1
Micheal Johnson

これはセキュリティの問題ではありません。 404ステータスは、サーバーが知らないリソースをリクエストしたことを訪問者に通知することを目的としています。応答にいくつかのヘルプを含めることは非常に合理的です。たとえば、多くのサーバーは404ページで検索機能を提供しています。有用な提案を提供できる場合は、支援しているだけです。 (もちろん、「管理」URLを提供することはおそらく役に立ちません。)

サーバーが安全に構成されていない場合は、その問題に対処する必要がありますが、より役立つ404応答を提供しようとするかどうかに関係なく、それを行う必要があります。

1
Dominic Cronin

「実際の」URLの提案は、それ(およびソースHTML-「ソースの表示」)がバックエンドテクノロジー(CMSなど)を識別し、システム/ CMSにセキュリティ上の欠陥があるかどうかを確認した場合にのみセキュリティリスクになります。

たとえば、WordPressサイトを実行してhttp://example.com/2016/05/20/my-articleの従来のURL形式を確認し、ソースコードにwp-contentディレクトリがリソースURL(CSS、JS、写真など)その後、私のURLがどれほど複雑であるかは問題になりません。バックエンドが明らかになり、ハッカーが管理URLを見つけるのは時間の問題です。

その反対に、私のURLに単純でわかりやすいURLのみが含まれていて、ソースコードにディレクトリやマークアップがあまり簡単に識別されていない場合、システム/ CMSをバックグラウンドで見つけるのは非常に難しく、攻撃しにくい。

明らかに、多くの人が言ったように、管理URLを非表示にすると「助け」となり、.htaccessなどのメカニズムを実装してIP(管理ページなど)によるアクセスを防ぐことができますが、100%保護されることは決してありません。

基本的に、サイトが提供する情報が少なければ少ないほど、より安全(IMO​​)になります。実際のURL(管理者のURLではない)を提案しても、サイトのセキュリティには影響しません。

0
Kinnectus