一个网站有一个由 链接的外部网站iframe
,例如:
example.com/hls/archive.php?token=f4290354ed8529245633fd8266a8238c44e4ef5aa87d50ff16
我喜欢该内容并将其链接到我的网站上,但是在一个又一个分析您的网站后,它没有向我显示数据我意识到我的内容所在的URLiframe
必须添加以下内容:
misite.com/iframe.php?noimportaesto=example.com
$_get
=占用的域是访问内容=example.com
的关键。token f4290354ed8529245633fd8266a8238c44e4ef5aa87d50ff16
从那里开始,我的想法就是阻止我的内容子域具有的每个主题的访问(view.site.com/contenido1.php
例如在几秒钟内token
重定向到另一个网站。x
但是对内容的访问必须是唯一的,仅限于该用户,也就是说,他们不能与 共享生成的链接token
,如果这样做,则不会显示内容。
并且这个token
生成的内容只对从域重定向example.com
到内容的内容有效:只有那个URLview.site.com/contenido1.php
允许访问,如果您尝试访问其他内容,这是无效的,您必须始终从域生成一个才能访问到所说或其他内容。contenido2.php
token
example.com
如果 的安全性被破坏
token cookie
或找不到,它就会变成false
,如果存在,它就会变成true
。
令牌将使用新的PHP技术生成,包括使用:bin2hex(random_bytes)
或bin2hex(openssl_random_pseudo_bytes)
。
不使用数据库或使用.htaccess
,token
唯一的一个必须保存在一个cookie
并且必须在4小时内过期。
到目前为止,我可以生成一个token
,但我不知道如何使用评论来验证它:
<?php
//http://php.net/manual/es/function.phpversion.php
//echo 'Versión actual de PHP: ' . phpversion();
session_start();
$expiry_timestamp = time() + $expiry;
//https://davidwalsh.name/random_bytes //https://secure.php.net/random_bytes
//$token = bin2hex(random_bytes(64)); //Disponible apartir de PHP V 7.
$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= "view.site.com/contenido1.php?token=<?php echo $_SESSION['token']; ?>">Contenido 1</a>
</body>
</html>
我不太明白这个过程是如何工作的,你能更好地向我解释一下这个主题吗?token
我必须在一段时间后进行类似的停用会话,而不是sesión
使用与为该用户生成cookie
的唯一会话匹配的会话token
,将域和子域作为参考键。
字体:
聊完,总结如下:
www.mipagina.com/seccion1, www.mipagina.com/seccion2, www.mipagina.com/seccion3,etc
www.miotrapagina.com/generarToken
并选择您想要令牌的部分在生成令牌的页面上,表单用于发送参数
seccion
并token
采用 POST 格式,从而确保数据安全且不可见generarToken.php
:在您只想通过 cookie 中的令牌访问的其他页面上,您首先必须为该部分设置该令牌,以便
validarToken.php
:此时,用户有一个 cookie,其中有一个
seccion
带有唯一令牌的 cookie。剩下的唯一事情是在要通过 token 保护的所有部分中添加几行代码:
操作说明
www.mipagina.com
必须访问www.mipagina.com/gerarTokne.php?seccion=seccionInicial
其中必须有一个参数sección
。php
将为所述部分生成一个令牌,并通过表单将用户重定向到另一个页面POST
,从而安全地发送该部分和令牌。validarToken.php
将接收请求POST
并将另一个部分添加到$_SESSION["secciones"]
包含数组的变量中,它将在其中确定所述令牌的到期日期。完成后,它会将用户重定向到已验证令牌的部分。编辑以使用更安全的技术。
要基于具有过期时间的共享密钥生成令牌(hmacs),可以使用此算法:
envia_hmac.php
recibe_hmac.php
与简单版的区别:
令牌/哈希是使用hash_hmac以这种方式生成的pass 接受这个哈希并使用外键生成最终的 hmac,从而更好地抵御长度攻击。
此示例中使用的哈希算法是 sha-256,支持算法的完整列表由hash_hmac_algos函数给出
消息是由两个公共字段的数组构建的:时间戳(用于计算过期时间)和要发送的文本(如果两个更改中的任何一个更改,则签名无效)
接收到的散列与我们从数据生成的散列和我们的密钥版本的比较是通过防止计时攻击的hash_equals函数完成的。
** 可以生成两个散列,其中一个只有一个可验证的公共部分,第二个散列取决于第一个散列并包含其他信息,这样就有另一个可以指示资源的共享秘密,一个额外的令牌是在后面交换(服务器到服务器、套接字、共享文件系统等...),或允许的操作、当前部分等...(如果带有公共组件的 hmac 有效,则第二个也有效)
带有 md5 哈希的普通版本
在这两个域中,您都定义了密钥
创建令牌代码:
代码验证令牌:
您可以通过获取、发布、放入 cookie 等方式传递此令牌。在这种情况下,哈希方法我放了 md5 但你可以使用你想要的那个。我使用分隔符
x
,但如果您生成带有填充的时间戳,则不需要,您还可以更改顺序、插入字符等。密钥是散列的,它永远不会(去)加密。
例如:
在
dominio.com
生成包含令牌的链接时,请挥手:sub.dominio.com/pagina-que-no-se-muestra-si-no-hay-token-valido?token=1533076524x2923B7A49999D4AA216CEBC1D7CB9A14
此处发送令牌
get
,您将通过以下方式接收它get
:在目标页面上,如果它
$_GET['token']
为空或令牌无效,则不会显示该页面。在其他页面上,您可以使用相同的密码,或每页使用不同的密码。
您使用帖子执行此操作,并且该值可以是来自数据库的 $_SESSION,因此当它到达您的站点时,它会验证该帖子是否存在并且它也等于数据库中的帖子,以提高安全性您可以在发送之前加密信息,这样用户就不会知道他们发送的参数是什么