例: http://stackoverflow.com/questions/396164/exposing-database-ids-security-risk
andhttp://stackoverflow.com/questions/396164/blah-blah
は同じ質問をロードします。
(これは質問テーブルのDB idだと思いますか?これはASP.NETの標準ですか?)
Web アプリでこのタイプのスキームを使用することの長所と短所は何ですか?
例: http://stackoverflow.com/questions/396164/exposing-database-ids-security-risk
andhttp://stackoverflow.com/questions/396164/blah-blah
は同じ質問をロードします。
(これは質問テーブルのDB idだと思いますか?これはASP.NETの標準ですか?)
Web アプリでこのタイプのスキームを使用することの長所と短所は何ですか?
まず、単純な ID は通常連続しているため、アプリケーションから他のデータを推測して取得するのは非常に簡単です。
AJAX を介して動的にではなく、実行時に JSON をロードします https://stackoverflow.com/questions/395858/doesnt-matter-what-I-type-here
そうは言っても、それはボーナスと見なされるかもしれません。なぜなら、安全なデータにアクセスするためにリンクをクリックする必要があるという事実に全体のセキュリティが左右されるという事実に、誰も正気ではなく、したがって簡単に発見できるからです。データは良いかもしれません。
ただし、1 つのポイントは、ある時点でデータベースのインデックスを再作成しようとしているということです。古い URL を無効にする何かを持っていると、検索エンジンに古いリンクがまだ残っているという他の理由がなければ、悪いことになります。
また、ここで SO では、このような他の質問へのリンクを使用するのはごく普通のことです。そのため、ある時点でインデックスを再作成して番号を付け直したい場合 (または GUID に移動したい場合)、古い構造と ID を保持する必要があります。
では、これが実現する可能性はあるのでしょうか、それとも必要になるのでしょうか? おそらくいいえ。
アプリケーションへのすべてのエントリポイントが既知であり、問題がないかのようにセキュリティを構築するだけです。
データベース ID は、データベースで質問を検索するために使用されます。それは数値です。つまり、高速です。省略した場合は、タイトルを検索する必要があり、非常に時間がかかります。
質問自体は、「検索エンジンに適した」ものにするための URL の一部です。g○gleなどで上位にランクインします。
プロ:
短所:
しかし、このようなコミュニティでは、同じ質問名が同時に投稿される可能性が (まだ最小限ではありますが) 高いことを覚えておいてください。この特定の Web アプリケーションが開発されたコンテキスト。
ASP.NETやその他のフレームワークでそれを行うのは悪い習慣ではなく、かなり一般的だとは思いません。@lassevkが言ったように、セキュリティがそれに依存している場合は、さらにチェックする必要があります(ユーザーXがYを記録できるか)が、公開サイトのURLのSEOフレンドリーさによります.
たとえば、SO の URL はかなりフレンドリーです。
Google は、URL の末尾よりも先頭の情報を高く評価するため、次のように表示します。
https://stackoverflow.com/pros-and-cons-of-using-db-id-in-the-url/q/407120
「url で db id を使用することの長所と短所」のランキングが高くなるはずです。それが唯一の要因ではありませんが、非常に大きな要因です。Amazon のフォーマットを見てください。
Wordpress は次のようにします。
ただし、「foo」という名前の同じ日に 2 つの投稿を投稿すると、次のようになります。
slug (foo/foo2) は PK ではありませんが、投稿テーブル上で一意として維持されます。
URL が GUID でない限り、ID を URL に入れることは問題ではないと思います。長すぎて入力しづらい。int や短い GUID (例: 6 ~ 8 文字) の場合は問題ありません。