위험 해체 : 현대 PHP 개발자가 $ _request를 피하는 이유
$ _request는 $ _get, $ _post 및 $ _cookie의 입력을 병합하여 보안과 예측 가능성을 약화시키는 소스 모호성을 만듭니다. 2.이 모호성은 악의적 인 쿠키가 CSRF 토큰과 같은 예상 포스트 데이터를 재정의 할 때 알 수 있듯이 쿠키 변조, 요청 메소드 혼란 및 CSRF 바이 패스와 같은 공격을 가능하게합니다. 3. 입력이 양식, URL 또는 쿠키에서 유래했는지 확실하지 않기 때문에 코드를 디버깅, 테스트 및 유지 관리하는 것이 어려워집니다. 4. 모범 사례는 특정 슈퍼 글로벌을 사용하여 지시합니다 - $ _ URL 매개 변수에 대한 받기, 양식 데이터에 대한 $ _post 및 명시 적으로 필요한 경우에만 $ _cookie가 명확하고 안전하며 테스트 가능한 코드를 보장합니다. 5. Laravel 및 Symfony와 같은 현대 프레임 워크는 명시적이고 안전한 입력 처리를 촉진하는 구조화 된 요청 객체 및 검증 도구를 제공합니다. 6. 핵심 원칙은 안전한 코드가 데이터의 출처를 정확히 알아야하므로 개발자는 $ _request와 같은 편의 중심의 모호한 초음파에 의존하기보다는 구체적이어야한다는 것입니다.
현대의 PHP 개발에서 $_REQUEST
사용하는 것은 널리 알려져 있으며 그럴만 한 이유가 있습니다. 언뜻보기에는 편리 해 보일 수 있지만 $_REQUEST
에 의존하면 안전하고 예측 가능하며 유지 관리 가능한 코딩 관행과 충돌하는 미묘하지만 심각한 위험이 발생합니다. 숙련 된 개발자가 왜 그것을 피하고 대신 사용하는지 분해합시다.

$_REQUEST
란 무엇이며 어떻게 작동합니까?
$_REQUEST
여러 소스에서 데이터를 수집하는 PHP SuperGlobal 배열입니다 : $_GET
, $_POST
및 $_COOKIE
(및 때로는 구성에 따라 $_FILES
). 이 소스의 입력을 단일 배열로 병합하여 출처를 지정하지 않고 사용자 입력에 액세스 할 수 있습니다.
예를 들어:

echo $ _request [ 'username'];
이 줄은 URL 매개 변수, 양식 게시물 또는 쿠키에서 '사용자 이름'을 가져올 수 있습니다.
처음에는 바로 가기처럼 보일 수 있습니다. 그러나 그 편의성은 문제의 근원입니다.

보안 위험 : 모호성은 악용을 가능하게합니다
$_REQUEST
의 가장 큰 문제는 소스 모호성 입니다. 데이터가 어디에서 시작되었는지 알 수 없습니다. 이것은 여러 공격 벡터의 문을 열어줍니다.
- 쿠키 변조 :
$_REQUEST
에는$_COOKIE
포함되어 있으므로 공격자는 양식 또는 URL 데이터를 무시하는 악의적 인 쿠키를 설정할 수 있습니다. - 요청 메소드 혼란 : Get을 통해 전송 된 값은 같은 이름의 쿠키에 의해 의도하지 않게 재정의되어 논리 결함으로 이어질 수 있습니다.
- CSRF 및 세션 고정 : 앱이 포스트에서 토큰을 확인하지만
$_REQUEST
오래된 또는 공격자 제어 쿠키 값으로 돌아가면 검증을 우회 할 수 있습니다.
게시물을 통해 CSRF 토큰을 기대하는 로그인 양식을 상상해보십시오.
if ($ _request [ 'csrf_token']! == $ _session [ 'token']) { 다이 ( 'CSRF 점검 실패'); }
공격자는 올바른 값을 가진 csrf_token
쿠키를 설정 한 다음 Get (게시물 데이터를 보내지 않음)을 통해 양식을 제출하도록 속임수를 만들어 $_REQUEST
쿠키로 돌아갈 수 있습니다. 수표가 통과하지만 실제 사용자 의도는 확인되지 않았습니다.
예측 가능성 및 디버깅이 어려움을 겪습니다
$_REQUEST
사용하면 응용 프로그램 흐름에 대해 추론하기가 더 어려워집니다. 그 가치는 양식에서 나왔습니까? URL? 사용자가 몰랐던 쿠키?
이 모호성은 다음과 같습니다.
- 더 어려운 디버깅 : 입력이 시작된 곳에서 빠르게 추적 할 수는 없습니다.
- 의도하지 않은 행동 : 이전 세션 중 쿠키 세트는 현재 요청 처리를 조용히 변경할 수 있습니다.
- 복잡성 테스트 : 단위 및 통합 테스트는 병합 된 입력 소스를 설명하고 설정 오버 헤드가 증가해야합니다.
명백한 것이 더 좋습니다. 양식에서 데이터를 예상하는 경우 $_POST
사용하십시오. URL에있는 경우 $_GET
사용하십시오. 이것은 의도의 명확하고 행동을 일관성있게 만듭니다.
현대 대안 및 모범 사례
$_REQUEST
대신 현대적인 PHP 응용 프로그램은 더 엄격하고 안전한 패턴을 따릅니다.
특정 슈퍼 글로벌 사용 :
- URL 매개 변수의 경우
$_GET
- 양식 제출에 대한
$_POST
- 쿠키 데이터가 명시 적으로 필요할 때
$_COOKIE
- URL 매개 변수의 경우
입력 추상화 레이어 : 많은 프레임 워크 (Laravel, Symfony)는 입력 처리를 안전하게 캡슐화하는 요청 객체를 제공합니다.
$ request-> get ( 'username'); // 명시적이고 테스트 가능하며 종종 필터링됩니다
검증 및 살균 : 소스에 관계없이 항상 입력을 검증하고 살균하십시오. Symfony의 유효성 검사기 또는 Laravel의 양식 요청과 같은 도구를 사용하면이를보다 쉽게 만듭니다.
명시 적 데이터 흐름 : 데이터의 출처를 알고 있습니다. 런타임이 당신을 결정하게하지 마십시오.
- 더 나은 보안
- 보다 예측 가능한 행동
- 더 쉬운 테스트 및 유지 보수
결론 : 편의에 대한 명확성
$_REQUEST
최소한의 편의를 위해 안전과 명확성을 거래합니다. 현대 PHP 개발에서는 나쁜 거래입니다. 특정 슈퍼 글로벌 및 구조화 된 요청 처리를 사용하면 다음을 얻을 수 있습니다.
$_REQUEST
피하는 것은 단지 규칙을 따르는 것이 아니라 신뢰할 수있는 코드를 작성하는 것입니다. 그리고 그것이 전문 PHP 개발의 모든 것입니다.
기본적으로 : 데이터가 어디에서 왔는지 모른다면 안전 할 수 없습니다. 그러니 추측하지 마십시오. 구체적입니다.
위 내용은 위험 해체 : 현대 PHP 개발자가 $ _request를 피하는 이유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

사용하는 _get, $ _ post 및 $ _cookie, leadingtounpredictablebehavior; 2.itallowsunintendedIntendendendendendendendendendendendendendendendendendendendendendendendendendendendendendendendendendendendendendendendendendendendendendineputsourcestoverrideindendones, sulesamalificationcookietriggertemeantemeantocomefocomefocome

$ _requestIntructesDataAmbiguityBiguityBiguityMergingInputsfrom $ _get, $ _ post 및 $ _cookie, MakingItimpOssiBleTodEtErminetHeSourceofData.2. thisUnPredabilitySweakEnsSecurityBecuRityBecUseBecUrentSourCeshAvedifferentTrestLevelAtCTACTCTACTOCTACTACTACTACTECTOC, SAULASCWGETERSTERSTERSTRSRVIAGETESTESI

$ _requestisDiscouragedInModEnphpBecauseItMergesItmergesinputsinputsinputsinputsinputsinputsinputsinputsinputsinputsinputsinputsinceatingsourceambiguityThatunderMinesseCurity 및 Predictability.2. ThisambIguityAtcsssssssssmethodconfusion, asseNamalici

$ _request 합병 Get, Post 및 Cookie 데이터는 보안 및 예측 가능성이 있습니다. 주요 충돌이 발생하면 Php.ini의 Variables_order 또는 request_order에 의해 재정의 순서가 결정되고 EGPC에 대한 기본값, 즉 게시 된 게시물이 쿠키를 획득하고 받는다. 예를 들어, Get, Post 및 Cookie에 "사용자"매개 변수가 있으면 Post Value가 승리합니다. $ _request를 사용하면 보안 취약성, 예측할 수없는 행동 및 테스트의 어려움이 발생할 수 있습니다. 모범 사례는 $ _request 사용을 피하는 것이지만 $ _get, $ _post 또는 $ _c를 명시 적으로 사용해야합니다.

$ _requestTorequestObjectSrepresentsamaJorimProvementInphpDevelopment.1.requestObjectSabstractSuperGlobalSintoAclean, 일관성있는 inputSources

$ _RequestDuetounPredictaSourceAndSecurityRisks; 2.use $ _getForIdemPotentOperationsikeFiltering, $ _ PostForState-changationsIne-formsUbmistion; 3.thevaluein $ _requestDonrequest_orderInphp.ini, leadtoinconsentbeHavior; 4. 4.

whanequest_orderdirectiveInphp.inideTermines whichdatasources (get, post, cookie) aremergedinto $ _requestandtheirPrecedenceOrder; forexample, request_order = "gp"는 $ _requestincludesonlygetandpostData, stocnsconflict;

예, $ _request는 더 이상 권장되지 않으며 현대 PHP 개발에서는 피해야합니다. 1. $ _ 요청은 $ _get, $ _post, $ _cookie 등과 같은 여러 소스에서 데이터를 집계하여 입력 소스가 불분명하고 디버깅 난이도가 높아집니다. 2 쿠키 데이터를 포함하면 보안 위험이 있으며 CSRF 또는 데이터 변조가 발생하기 쉽습니다. 3. RESTFULAPI의 명확한 입력 사양을 준수하지 않아 인터페이스의 예측 가능성에 영향을 미칩니다. 4. Php.ini의 변수 _order 및 request_order 구성에 의존하여 응용 프로그램 이식성을 줄입니다. 5. Laravel 및 Symfony와 같은 현대 프레임 워크에서 요청 객체는 더 안전하고 선명하며 더 수용 가능한 것을 제공합니다.
