【发布时间】:2019-01-18 02:20:57
【问题描述】:
我在同一台服务器上托管了两个域,域 A 和域 B。
域 A 将生成对域 B 内容的唯一访问令牌。
域 A
<?php
//http://php.net/manual/en/function.phpversion.php
//echo 'Version of PHP: ' . phpversion();
session_start();
//$expiry_timestamp = time() + $expiry;
//https://davidwalsh.name/random_bytes //https://secure.php.net/random_bytes
//$token = bin2hex(random_bytes(64));
$token = bin2hex(openssl_random_pseudo_bytes(64));
//$time_token = 12000;
//$time_token = srand(floor(time() / $time_token));
//echo $token;
$_SESSION['token']=$token;
?>
<html>
<head>
</head>
<body>
<a href= "domainB.com/content1.php?token=<?php echo $_SESSION['token']; ?>">Content 1</a>
</body>
</html>
生成令牌的过程似乎是正确的,它很容易生成。
现在我的问题来了,如何验证从域 A 到域 B 生成的令牌?生成的令牌必须仅对生成令牌的内容有效,令牌不得对其他内容有效,令牌必须是唯一的,这样如果不是来自他或她的计算机,用户就不能与其他用户共享访问权限,令牌必须仅在访问 4 小时内有效 4 小时后令牌将不再有效以显示内容必须生成新令牌才能再次访问。
这个过程可以使用cookie而不使用数据库来完成吗?
也许使用密钥来识别域 A 和域 B,类似的东西
$APP_SECRET_KEY = "key code secret";
【问题讨论】:
-
您不想使用数据库,但您可以创建一个文件来检查数据吗?您从域 A 生成令牌 -> 使用用户 + 令牌数据创建文件 -> 域 B 检查此文件 -> 4 小时后删除文件
-
将令牌从一个域传递到另一个域很容易,但是您将需要两个域都可以访问的某种共享服务器端资源(因此无法修改) - 如果您不使用数据库,它可能是共享文件服务器。
-
@CD001你能解释一下我应该在我的服务器上修改什么吗?
-
@MickaelLeger 看起来像你说的那么简单,但是这个过程应该如何实现:(
-
在我工作的地方,我们使用 AWS s3 (aws.amazon.com/fr/s3),创建文件、上传文件、读取文件或删除文件真的很容易。我确定还有其他过程可以做到,但不知道他们很抱歉:s