ホームページ > バックエンド開発 > PHPチュートリアル > PHPマスター| 1回限りのURLを生成します

PHPマスター| 1回限りのURLを生成します

Joseph Gordon-Levitt
リリース: 2025-02-24 10:30:11
オリジナル
243 人が閲覧しました

PHP Master | Generating One-Time Use URLs

1回限りのURL:セキュア、シングルユースWebアドレス

1回限りのURL(OTU)は、1回の使用のために設計された一時的なWebアドレスです。 これは、アカウント検証や限られた時間アクセスなどのシナリオでよく使用されるファイルやリソースへの安全なアクセスに最適です。 この記事では、PHPを使用したOTUの生成、実装、および有効期限を詳しく説明しています。

重要な概念:

  • セキュアトークン生成:phpのsha1()およびuniqid()関数をレバレッジして、各OTUに予測不可能なユニークなトークンを作成し、衝突のリスクを最小限に抑えます。
  • データベーストラッキング:OTUの使用と有効性を管理するために、データベースにトークン、ユーザー名、およびタイムスタンプを保存します。 トークンの検証と無効化:
  • 処理スクリプトは、データベースに対してトークンを検証し、意図したアクション(アカウントのアクティブ化など)を実行し、すぐに再利用を防ぐためにトークンを無効にします。
  • live-to-live(TTL):TTL(例:24時間)を実装して、OTUSを自動的に期限切れにし、セキュリティを強化します。
  • 1回限りのURLを作成します:
ユーザー登録システムを想像してください。サインアップ後、OTUを含む確認メールが送信され、アカウントをアクティブにします。 OTU形式は次のとおりです

データベーステーブル:

OTU情報はデータベーステーブルに保存されています:http://example.com/activate?token=ee97780...

トークン生成(PHP):

CREATE TABLE pending_users (
    token CHAR(40) NOT NULL,
    username VARCHAR(45) NOT NULL,
    tstamp INTEGER UNSIGNED NOT NULL,
    PRIMARY KEY(token)
);
ログイン後にコピー
一意の識別子を生成し、

をトークン用に40文字の文字列にハッシュします。 データベース挿入(PHP):

<?php
$token = sha1(uniqid($username, true));
?>
ログイン後にコピー

uniqid()トークン、ユーザー名、およびタイムスタンプは、後で検証するために保存されます。 sha1()

url構築(PHP):

これにより、otu。
<?php
$query = $db->prepare("INSERT INTO pending_users (username, token, tstamp) VALUES (?, ?, ?)");
$query->execute(array($username, $token, $_SERVER["REQUEST_TIME"]));
?>
ログイン後にコピー
が作成されます

電子メール通知(PHP):

otuは電子メールでユーザーに送信されます。
<?php
$url = "http://example.com/activate.php?token=$token";
?>
ログイン後にコピー

1回限りのURL(Activate.php)の処理:

このスクリプトは、otu:を検証および処理します

<?php
$message = "Thank you for signing up! Activate your account: $url";
mail($address, "Account Activation", $message);
?>
ログイン後にコピー
このスクリプトはトークンを取得し、データベースに対して検証し、アカウントのアクティベーションを実行し、トークンを削除して再利用を防止します。

ttl:

の追加

これにより、24時間の有効期限チェックが追加されます。

<?php
// Retrieve token
$token = isset($_GET["token"]) && preg_match('/^[0-9A-F]{40}$/i', $_GET["token"]) ? $_GET["token"] : throw new Exception("Invalid token.");

// Verify token
$query = $db->prepare("SELECT username, tstamp FROM pending_users WHERE token = ?");
$query->execute(array($token));
$row = $query->fetch(PDO::FETCH_ASSOC);
$query->closeCursor();

if (!$row) { throw new Exception("Invalid token."); }
extract($row);

// Account activation logic...

// Delete token
$query = $db->prepare("DELETE FROM pending_users WHERE username = ? AND token = ? AND tstamp = ?");
$query->execute(array($username, $token, $tstamp));
?>
ログイン後にコピー
結論:

1回限りのURLは、安全で使い捨てのアクセスのための堅牢なメカニズムを提供します。 このアプローチは、適切なデータベース管理およびセキュリティプラクティスと組み合わされて、安全で信頼できるシステムを保証します。 生産対応のソリューションにエラー処理と入力の消毒を実装することを忘れないでください。 クリーンアップスクリプトを追加して、データベースから期限切れのトークンを定期的に削除することを検討してください。

以上がPHPマスター| 1回限りのURLを生成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート