什么是Token
Token 中文翻译为令牌,一般用来防止表单重复提交,csrf
跨站请求伪造。 保证web安全。
Token原理: 服务端会先创建一个Token,保存在session
中,客户端中添加<input type="hidden" name="token" value="<?php $_SESSION['token']?>"/>
,提交表单时,服务端会获取token
的值,如果值和session
设置的值不同,表明重复提交或者为csrf
攻击。
例子
<?php
session_start();
function setToken() {
$_SESSION['token'] = md5(microtime());
}
function validToken() {
$return = ($_REQUEST['token'] === $_SESSION['token'] ? true : false);
setToken();
return $return;
}
if(!isset($_SESSION['token']) || $_SESSION['token'] == '') {
setToken();
}
if(isset($_POST['text'])) {
if(validToken()) {
echo time();
} else {
echo 'error';
}
}
?>
<html>
<body>
<form action="" method="post">
<input type="hidden" name="token" value="<?php $_SESSION['token']?>"/>
<input type="text" name="text" value="val"/>
<input type="submit" value="submit"/>
</form>
</body>
</html>