牛骨文教育服务平台(让学习变的简单)
博文笔记

PHP使用Token

创建时间:2017-02-06 投稿人: 浏览次数:1679

什么是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>
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。