gpt4 book ai didi

php - 托尔根 CSRF 不工作

转载 作者:行者123 更新时间:2023-11-29 18:30:35 25 4
gpt4 key购买 nike

我不知道或者是问题所在,我的代码无法正常工作,总是错误 1||错误 2

  <?php
session_start();
$token = uniqid(rand(), true);
$_SESSION['token'] = $token;
$_SESSION['token_time'] = time();

?>
<body>
<form id="form" name="form" method="post" action="">
<p>Pseudo :
<label>
<input type="text" name="pseudo" id="pseudo" />
</label>
</p>
<p>E-mail :
<label>
<input type="text" name="email" id="email" />
</label>
</p>
<p>Nom :
<label>
<input type="text" name="nom" id="nom" />
</label>
<input type="hidden" name="token" id="token" value="<?php echo $token;?>"/>
</p>
<p>
<label>
<input type="submit" name="Envoyer" id="Envoyer" value="Envoyer" />
</label>
</p>
</form>
</body>
</html>

我不知道或者是问题所在,我的代码无法正常工作,总是错误 1 ​​||error2我想保护我的网站,但我不知道如何使用此 torgen,请帮助我

 <?php

session_start();

if(isset($_SESSION['token']) && isset($_SESSION['token_time']) && 
isset($_POST['token']))
{

if($_SESSION['token'] == $_POST['token'])
{

$timestamp_ancien = time() - (15*60);
//Si le jeton n'est pas expiré
if($_SESSION['token_time'] >= $timestamp_ancien)
{
//here Instruction


}else{echo"error3";}
}else{echo"error2";}
}else{echo"error1";}
?>

最佳答案

  1. 您尚未声明意味着表单将在同一页面上发布的操作。
  2. 因此,对于第 1 点,每次请求进入页面时都会运行生成 token 的代码,因此 token 每次在 session 中都会更改,但在 $_POST 中保持较早的值,并引发 error2。
  3. 您尚未检查方法和 $_POST 变量,这就是您收到错误 1 ​​的原因

请尝试以下操作:

 <?php
session_start();
function generate_token(){
$token = uniqid(rand(), true);
$_SESSION['token'] = $token;
$_SESSION['token_time'] = time();
}


//avoid putting script at bottom until required
if($_SERVER['REQUEST_METHOD']=='POST' && !empty($_POST)){
if(isset($_SESSION['token']) && isset($_SESSION['token_time']) &&
isset($_POST['token']))
{

if($_SESSION['token'] == $_POST['token'])
{

$timestamp_ancien = time() - (15*60);
//Si le jeton n'est pas expiré
if($_SESSION['token_time'] >= $timestamp_ancien)
{
//here Instruction
generate_token();//for next call


}else{echo"error3";}
}else{echo"error2";}
}else{echo"error1";}
}
generate_token();
?>
<body>
<form id="form" name="form" method="post" action="">
<p>Pseudo :
<label>
<input type="text" name="pseudo" id="pseudo" />
</label>
</p>
<p>E-mail :
<label>
<input type="text" name="email" id="email" />
</label>
</p>
<p>Nom :
<label>
<input type="text" name="nom" id="nom" />
</label>
<input type="hidden" name="token" id="token" value="<?php echo $_SESSION['token'];?>"/>
</p>
<p>
<label>
<input type="submit" name="Envoyer" id="Envoyer" value="Envoyer" />
</label>
</p>
</form>
</body>
</html>

现在发生的情况是每次页面加载时都会调用您的函数,但发布数据将在早期状态进行比较和操作。

**如果我理解有任何错误,请纠正我。**

关于php - 托尔根 CSRF 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45722013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com