首頁  >  文章  >  後端開發  >  解決啟用Csrf後出現400錯誤

解決啟用Csrf後出現400錯誤

*文
*文原創
2017-12-27 11:43:242182瀏覽

如何解決啟用Csrf後出現400錯誤?本文主要介紹了啟用Csrf後POST資料時出現的400錯誤的相關資料。希望對大家有幫助。

最近一直出現這樣的錯誤,一直在找原因,偶然看到一篇解決的文章,分享給大家看看。

第一種解決方法是關閉Csrf

public function init(){
  $this->enableCsrfValidation = false;
}

第二種解決方法是在form表單中加入隱藏域

00b5d82ce34774ecc2f284f6ef3a9154request->csrfToken ?>">

#第三種解決方法是在AJAX中加入_csrf欄位

var csrfToken = $('meta[name="csrf-token"]').attr("content");
$.ajax({
 type: 'POST',
 url: url,
 data: {_csrf:csrfToken},
 success: success,
 dataType: dataType
});

Yii這個符合的過程和Yii::$app-> ;request->csrfToken 這個值儲存位置說明:

儲存位置

  protected function createCsrfCookie($token)
  {
    $options = $this->csrfCookie;
    $options['name'] = $this->csrfParam;
    $options['value'] = $token;
    return new Cookie($options);
  }

校驗方法

#
  public function validateCsrfToken($token = null)
  {
    $method = $this->getMethod();
    // only validate CSRF token on non-"safe" methods http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.1
    if (!$this->enableCsrfValidation || in_array($method, ['GET', 'HEAD', 'OPTIONS'], true)) {
      return true;
    }

    $trueToken = $this->loadCsrfToken();

    if ($token !== null) {
      return $this->validateCsrfTokenInternal($token, $trueToken);
    } else {
      return $this->validateCsrfTokenInternal($this->getBodyParam($this->csrfParam), $trueToken)
        || $this->validateCsrfTokenInternal($this->getCsrfTokenFromHeader(), $trueToken);
    }
  }

相關推薦:

#對同源策略和csrf安全策略的知識點講解

XSS及CSRF的詳細介紹

#Yii2.0防禦csrf攻擊方法

以上是解決啟用Csrf後出現400錯誤的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn