データベースにフィールドを追加することはおそらく最良の選択肢です。開発者はそこにいます。
別の方法として、リンク内に日付を含め、それに署名を追加する方法があります。これを安全にするのは難しく、URL が非常に長くなります。
- 日付は抽出可能なままにしておく必要があります。これにより、日付だけに約 8 文字が追加されます (URL 用にエンコードする必要があります)。
- 安全な署名を作成するのは困難です。アルゴリズムがわかっている場合、攻撃者は独自の有効なリンクを作成できます。一般的なハッシュ アルゴリズムは長い文字列を生成します。base62 でエンコードされた MD5 でさえ 22 文字の文字列になります。そのため、リンクに最低 10 文字を追加して計算する必要があります。
- 安全なトークンには、20 個以上のランダムな文字が含まれている必要があります。
- トークンはハッシュ化された状態でのみデータベースに保存する必要があるため、後でハッシュ化されたトークンを見つけることができるように、リンクに ID を含める必要があります。この数は、さらに 6 文字を追加できます。
リンクコードだけでも最低 44 文字が必要で、残りの URL と合わせるとかなり長いリンクになる可能性があります。一部の電子メール クライアントでは、リンクが長いと問題が発生します。
これらの 18 文字を節約し、データベース フィールドを追加することをお勧めします。次に追加する必要がある情報、おそらく最大クリック数を知っている人はいますか? データベースは拡張可能ですが、リンクは拡張できません。