>  기사  >  php教程  >  Yii2.0 csrf 공격 방어 방법

Yii2.0 csrf 공격 방어 방법

黄舟
黄舟원래의
2017-01-03 09:46:161525검색

yii2에서는 테스트 도구 POSTMAN을 사용하든, 명령줄 CURL 요청을 사용하든, ajax 요청을 사용하든 항상 http400: Bad Request 오류가 발생하며 웹 페이지를 사용하여 GET에 액세스하면(POST 제거) verbFilter 제한), 이는 정상입니다.

정보를 참조한 결과 이것이 CRSF 검증의 이유임을 알았습니다

원리:

쿠키 해싱, 서버 허용. 클라이언트에 전송된 모든 양식에 임의의 값_csrf를 표시하고 동시에 클라이언트의 COOKIE에 관련 토큰을 저장합니다.

확인 중에 서버는 수신할 때마다 숨겨진 _csrf 입력을 _POST()합니다. 요청과 클라이언트의 COOKIE를 비교하여 검증합니다.

공격자의 공격 원리는 클라이언트의 COOKIE를 사용하는 것이지만 공격자는 단지 사용하는 COOKIE의 특정 내용을 얻을 수 없습니다. 여기서 XSS 공격의 가능성은 웹사이트의 XSS 취약점으로 인해 쉽게 도난당할 수 있기 때문입니다. 일반적으로 공격자는 해시 값을 계산해야 한다고 판단하면 포기할 것입니다. 공격 URL에 토큰을 추가하면 확인이 실패합니다.

공격자가 (이론적으로) 제3자 쿠키를 얻을 수 없어 양식의 데이터가 구성되지 않기 때문에 이것이 가장 간단한 해결책일 수 있습니다.

해결책:

1.禁用CRSF验证(不推荐):'enableCsrfValidation' => false,

'components' => [
'request' => [
'cookieValidationKey' => '83r5HbITBiMfmiYPOZFdL-raVp4O1VV4',
'enableCookieValidation' => false,
'enableCsrfValidation' => false,
]

2. 데이터 제출 시 csrf 정보를 전달합니다

a. ActiveForm 컴포넌트 호출 시 제출된 데이터는 자동으로 _csrf를 가져옵니다

b. Ajax 제출은 OK입니다. 헤더(아래 참조)를 추가하여 제출할 데이터와 함께 제출하세요

Yii2.0 csrf 공격 방어 방법

c. php를 통해서도 csrf 정보를 얻을 수 있습니다

Yii::$app->request->csrfParam;(获取csrf-param)
Yii::$app->request->csrfToken;(获取csrf-token)

위는 CSRF 공격에 대한 Yii2.0 방어 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.