发布于2024-12-30 阅读(0)
扫一扫,手机访问
CSRF Token 是一个随机生成的字符串,在用户会话中生成并存储,并在每个请求中随表单或链接一起发送。当服务器收到请求时,会验证 CSRF Token 是否与会话中的 Token 一致,如果不一致,则认为是 CSRF 攻击,并拒绝请求。
Referer Header 是一个 Http 请求头,包含了请求来源的 URL。服务器可以检查 Referer Header 来确定请求是否来自合法来源。如果 Referer Header 不存在或指向一个不合法来源,则认为是 CSRF 攻击,并拒绝请求。
SameSite Cookie 是一个新的 Cookie 属性,可以用来限制 Cookie 的作用域。SameSite Cookie 可以设置为 "Strict"、"Lax" 或 "None"。只有将 SameSite Cookie 设置为 "Strict" 时,Cookie 才会在跨站点请求中发送。
双重提交令牌模式是一种防范 CSRF 攻击的经典方法。在双重提交令牌模式中,服务器会在每个请求中生成一个随机的令牌,并将该令牌存储在隐藏表单字段中。当用户提交表单时,服务器会验证隐藏表单字段中的令牌是否与会话中的令牌一致,如果不一致,则认为是 CSRF 攻击,并拒绝请求。
以下是一段使用 CSRF Token 来防范 CSRF 攻击的 PHP 代码:
<?php // 生成 CSRF Token $csrf_token = bin2hex(random_bytes(32)); // 将 CSRF Token 存储在会话中 $_SESSioN["csrf_token"] = $csrf_token; ?> <fORM action="submit.php" method="post"> <input type="hidden" name="csrf_token" value="<?php echo $csrf_token; ?>"> <!-- 表单其他字段 --> <input type="submit" value="提交"> </form>
在 submit.php
文件中,可以如下所示验证 CSRF Token:
<?php // 获取请求中的 CSRF Token $csrf_token = $_POST["csrf_token"]; // 获取会话中的 CSRF Token $session_csrf_token = $_SESSION["csrf_token"]; // 比较两个 CSRF Token if ($csrf_token !== $session_csrf_token) { // 认为是 CSRF 攻击,拒绝请求 die("CSRF attack detected!"); } // 处理表单提交 // ...
通过使用 CSRF Token、Referer Header、SameSite Cookie 或双重提交令牌模式,PHP 开发者可以有效地防范 CSRF 攻击,保护 WEB 应用的安全。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店