11

データベースの主キーをURL識別子として使用することの長所と短所は何ですか?例として、http:// localhost / post / view/13-13が私の投稿テーブルの主キーです。

redditのような一部のサイトでは、主キーではないがリンクの識別に役立つ一意のIDであると私が想定しているものを使用しています。

http://www.reddit.com/r/funny/comments/7ynin/the_mystery_of_irelands_worst_driver/

/ 7ynin /が同じである限り、URLの最後の部分を好きなように変更できます。


Diggはリンクタイトルのスラッグを使ってリンクを識別しているようです:

http://digg.com/space/Liquid_Water_Recently_Seen_on_Mars

正しく思い出せば、デフォルトのWordPressインストールでは、派手なURLが有効になるまで、IDとしてindex.php?p =#が使用されます。


SEOのために、可能な限り最も有益なURLが必要な理由はわかりますが、主キーの使用がセキュリティリスクなのか、それとも単に悪い形式なのかを確認しようとしています。

4

6 に答える 6

3

おっしゃる通り、URLに直接タイトルを入れるポイントはSEOです。URL にキーワードが含まれていると、検索エンジンの結果に大きな影響を与えます。

ただし、例に関連する他のいくつかの考え:

  • reddit の英数字キーが主キーではないと仮定する理由がわかりません。主キーを数値にすることを強制するものは何もありません。それが投稿の一意の識別子である場合、それを主キー (または少なくともその一部) として使用しない理由はありません。
  • 実際、Digg はタイトルの一意性を強制しています (おそらく、特定のカテゴリ内で、私は何年も Digg に行っていないので思い出せません)。私はこれを、次のような URL を持つ重複したストーリーでかなり頻繁に見ていました。

    http://digg.com/space/Liquid_Water_Recently_Seen_on_Mars_2
    

    これは、タイトルが主キーの少なくとも一部であることを意味します。これは、リンクがどのストーリーを対象としていたかを識別する唯一の方法であるためです。

pantulis が述べたように、人々が他のものを推測/予測する能力を除いて、URL で主キーを使用することによる重大なセキュリティ リスクは実際にはありません。しかし、とにかくセキュリティ対策として「誰もこれを推測しない」に頼るべきではありません。

于 2009-02-19T20:38:59.987 に答える
3

URL/リンクに主キーを含めない場合は、ある種の一時的な合成キーを作成する必要があり、さらに、そのキーのマッピングをユーザーのセッションに保存する必要があります。これにより、状態/メモリ使用量/何かがアプリケーションに追加されます。

値が本当に機密性の高いものである場合、これはそれを隠すコストに見合う価値があるかもしれません。しかし、鍵を隠しても、本当に安全になるわけではありませんよね? アイテムへのアクセスを許可する前に、「コントローラー」(サーブレット、分離コードなど)でユーザーの役割を確認する必要があります。

于 2009-02-19T21:11:58.033 に答える
2

これは本質的にセキュリティ リスクではありませんが、外部エンティティにシステムに関する情報を伝えるため、一般的に回避することをお勧めします。

于 2009-02-19T20:34:28.730 に答える
2

Reddit も数値 ID を使用しますが、Base 36を使用して変換されるため、文字列として表示されます。これは 16 進数のようなもので、実際には文字列でもあります。唯一の違いはベースです。

Base 36 は、「ASCII 文字を使用した、大文字と小文字を区別しない最もコンパクトな英数字システム」であり、簡単にエンコードおよびデコードできます。なぜ36?AZ = 26 + 0-9 = 10.

于 2013-01-23T18:48:10.333 に答える
1

短所:訪問者は誰でも他のIDを簡単に推測できますが、これはあなたが望むものではない可能性があります。

于 2009-02-19T20:30:25.790 に答える