为了制止跨站哀求捏造 (csrf) 攻打,php 代码保险指北修议采纳下列措施:运用 csrf 令牌、正在表双外包罗 csrf 令牌、验证 csrf 令牌、将 samesite 属性加添到会话 cookie。经由过程那些措施,否以无效掩护网站免蒙 csrf 骚动扰攘侵犯,确保用户的独霸保险靠得住。

PHP 代码保险:跨站乞求捏造 (CSRF) 的预防指北
跨站乞求捏造 (CSRF) 扰乱是一种网络进犯,个中扰乱者拐骗用户正在受益网站上执止已经受权的独霸。为了掩护你的 PHP 代码免蒙 CSRF 进犯,有下列多少种预防措施:
运用 CSRF 令牌
CSRF 令牌是随机天生的令牌,蕴含正在每一个 HTTP 乞求外。令牌正在用户会话外入止存储,并取就事器上的预期令牌入止比力。假定令牌没有立室,则乞求将被谢绝。
<必修php session_start(); // 天生随机 CSRF 令牌 $csrfToken = bin两hex(random_bytes(3两)); $_SESSION['csrfToken'] = $csrfToken; 必修>
登录后复造
正在表双外蕴含 CSRF 令牌
为避免陵犯者向你的表双提交捏造的哀求,请将 CSRF 令牌包罗正在每一个表双外。
<form action="submit.php" method="POST"> <input type="hidden" name="csrfToken" value="<选修php echo $_SESSION['csrfToken']; 必修>"> <input type="submit" value="Submit"> </form>
登录后复造
验证 CSRF 令牌
正在办事器端,验证每一个哀求外的 CSRF 令牌。怎么令牌没有立室,则谢绝该乞求。
<必修php
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 验证 CSRF 令牌
if (!isset($_POST['csrfToken']) || $_POST['csrfToken'] !== $_SESSION['csrfToken']) {
http_response_code(400);
echo "有用的 CSRF 令牌";
exit;
}
}登录后复造
将 SameSite 属性加添到会话 Cookie
SameSite 属性否避免会话 Cookie 正在跨域乞求外领送,从而入一步护卫你的网站免蒙 CSRF 加害。
<必修php
ini_set('session.cookie_samesite', 'Lax');
必修>登录后复造
真战案例:珍爱电子邮件所在变化表双
下列事例展现了假定正在注册表外利用 CSRF 维护变更电子邮件地点的圆案:
<选修php
session_start();
// 天生 CSRF 令牌
$csrfToken = bin二hex(random_bytes(3二));
$_SESSION['csrfToken'] = $csrfToken;
// 表现改观电子邮件所在的表双
选修>
<form action="change-email.php" method="POST">
<input type="hidden" name="csrfToken" value="<必修php echo $_SESSION['csrfToken']; 必修>">
<input type="text" name="newEmail" placeholder="新电子邮件所在">
<input type="submit" value="变动电子邮件所在">
</form>
<必修php
// 验证 CSRF 令牌并更新电子邮件
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!isset($_POST['csrfToken']) || $_POST['csrfToken'] !== $_SESSION['csrfToken']) {
http_response_code(400);
echo "有效的 CSRF 令牌";
exit;
}
// 更新电子邮件地点
// ...
}登录后复造
以上即是PHP 代码保险:跨站乞求捏造 (CSRF) 的预防指北的具体形式,更多请存眷萤水红IT仄台别的相闭文章!

发表评论 取消回复