我正在阅读一些PHP PDO数据清理,并发表了这篇文章:
PDO & Sanitize Date/Remove HTML
我确信我的代码使用PDOStatement bindParam来阻止SQL注入,但我读了这篇评论(转述)
'使用带有令牌的$ _POST将有助于避免CSRF'
我很好奇,令牌是什么意思,我该如何实现呢?
答案 0 :(得分:0)
令牌可能是一些哈希值,您将其存储在会话中并通过表单发送。 在验证表单数据之前,请检查是否:
简单实施:
<?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';
}
}
?>