PHP的CSRF 令牌到底是干什么的?

什么是 CSRF?

CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种网络攻击方式。想象一下,如果你在银行的网站上登录了你的账户,然后去浏览其他网站,而那个恶意网站悄悄地让你发送一条消息给银行,要求转账给别人,这显然是不安全的。CSRF 攻击就是利用你已经登录的身份,在你不知情的情况下执行某些操作。

为了防止这种情况发生,网站开发者使用了一种叫做“CSRF 令牌”的东西。这个令牌就像是一个秘密的密码,只有你和网站知道。每次你要做重要操作时,比如转账,网站会检查你是否带着正确的密码。如果密码对不上,那么操作就不会被执行。

如何使用 CSRF 令牌?

当用户访问一个页面时,服务器会给用户生成一个独一无二的 CSRF 令牌,并且把这个令牌存储在用户的浏览器中(通常是以隐藏字段的形式放在表单里)。当用户提交表单时,这个令牌也会被一起发送到服务器。服务器端则会验证收到的令牌是否正确,从而确保请求确实来自合法用户。

下面是一个简单的 PHP 示例代码,它展示了如何生成和验证 CSRF 令牌:

<?php
session_start(); // 启动会话

// 定义一个函数用于生成随机字符串作为 CSRF 令牌
function generateCsrfToken() {
   
    return bin2hex(random_bytes(32)); // 生成32字节的随机数并转换成16进制字符串
}

// 如果没有创建过 CSRF 令牌,则创建一个新的
if (!isset($_SESSION[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值