我正在阅读一些 PHP PDO 数据清理,并看到这篇文章:
我确信我的代码使用 PDOStatement bindParam 来防止 SQL 注入,但是我阅读了此评论(释义)
'使用带有令牌的 $_POST 将有助于避免 CSRF'
我很好奇,令牌是什么意思,我如何实现它?
我正在阅读一些 PHP PDO 数据清理,并看到这篇文章:
我确信我的代码使用 PDOStatement bindParam 来防止 SQL 注入,但是我阅读了此评论(释义)
'使用带有令牌的 $_POST 将有助于避免 CSRF'
我很好奇,令牌是什么意思,我如何实现它?
令牌可能是一些哈希,您将其存储在会话中并通过表单发送。在验证表单数据之前,您检查是否:
一个简单的实现:
<?php
session_start();
if(!isset($_SESSION['token']))
{
$_SESSION['token']=uniqid();
}
?>
<form method="post">
<input name="token" type="hidden" value="<?php echo $_SESSION['token'];?>">
<input name="something" value="some data to send">
<input type="submit">
</form>
<?php
if(isset($_POST['something']))
{
if(!isset($_POST['token']) || $_POST['token']!==$_SESSION['token'])
{
echo 'missing a valid token';
}
else
{
echo 'got a valid token, I will use the data';
}
}
?>