1回限りのURL:セキュア、シングルユースWebアドレス
1回限りのURL(OTU)は、1回の使用のために設計された一時的なWebアドレスです。 これは、アカウント検証や限られた時間アクセスなどのシナリオでよく使用されるファイルやリソースへの安全なアクセスに最適です。 この記事では、PHPを使用したOTUの生成、実装、および有効期限を詳しく説明しています。
重要な概念:
sha1()
およびuniqid()
関数をレバレッジして、各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()
これにより、otu。
<?php $query = $db->prepare("INSERT INTO pending_users (username, token, tstamp) VALUES (?, ?, ?)"); $query->execute(array($username, $token, $_SERVER["REQUEST_TIME"])); ?>
otuは電子メールでユーザーに送信されます。
<?php $url = "http://example.com/activate.php?token=$token"; ?>
このスクリプトは、otu:を検証および処理します
<?php $message = "Thank you for signing up! Activate your account: $url"; mail($address, "Account Activation", $message); ?>
の追加
これにより、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 サイトの他の関連記事を参照してください。