亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP - 如何在同一頁面上以多種形式使用csrf令牌

PHP - 如何在同一頁面上以多種形式使用csrf令牌

PHP
犯罪嫌疑人X 2023-11-05 15:50:43
我在同一頁上有 2 個表格。我想以兩種形式使用 csrf 令牌。當我嘗試使用它時,它會在提交表單時重新生成 csrf 令牌。我該如何解決這個問題?<?phpfunction csrf_token() {    return bin2hex(random_bytes(35));}function create_csrf_token() {    $token = csrf_token();    $_SESSION['csrf_token'] = $token;    $_SESSION['csrf_token_time'] = time();    return $token;}function csrf_token_tag() {    $token = create_csrf_token();    return '<input type="hidden" name="csrf_token" value="' . $token . '">';}$csrf_token = csrf_token_tag();?><form action="" method="post">    ...    <?= $csrf_token; ?></form><form action="" method="post">    ...    <?= $csrf_token; ?></form>
查看完整描述

1 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

當您刷新頁面時,該函數created_csrf_token會再次觸發,從而更改 CSRF 令牌。


你可以確定范圍。例如


<?php


function csrf_token() {

? ? return bin2hex(random_bytes(35));

}


function create_csrf_token() {

? ? if (isset($_SESSION['csrf_token'])) {

? ? ? ? return $_SESSION['csrf_token'];

? ? }

? ? $token = csrf_token();

? ? $_SESSION['csrf_token'] = $token;

? ? $_SESSION['csrf_token_time'] = time();

? ? return $token;

}


function csrf_token_tag() {

? ? $token = create_csrf_token();

? ? return '<input type="hidden" name="csrf_token" value="' . $token . '">';

}


$csrf_token = csrf_token_tag();

?>


<form action="" method="post">

? ? ...

? ? <?= $csrf_token; ?>

</form>


<form action="" method="post">

? ? ...

? ? <?= $csrf_token; ?>

</form>

將 isset 添加到 中將create_csrf_token檢查是否設置了 CSRF 令牌,并返回現有令牌,而不是創建新令牌。


不過,您可能想添加一些邏輯,以便在大約 5 分鐘后創建一個新的 CSRF 令牌。


查看完整回答
反對 回復 2023-11-05
  • 1 回答
  • 0 關注
  • 127 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號