원시 입력에서 안전한 데이터로 : PHP의 정의 워크 플로우 $ _get Superglobal
항상 $ \ _ 데이터를 신뢰할 수없는 것으로 처리하십시오. 2. isset () 또는 Null Coalescing을 사용하여 매개 변수가 존재하는지 확인하십시오. 3. 예상 유형을 기준으로 소독 할 수 있습니다 - 정수의 경우 필터 \ _validate \ _int, 문자열의 경우 htmlspecialchars (), 필터 \ _validate \ _boolean; 4. 허용 값 또는 범위 제약과 같은 비즈니스 로직에 대해 검증; 5. 컨텍스트에 대한 적절한 출력 (예 : htmlspecialchars (), html, sql에 대한 준비된 진술); 6. $ \ _를 통해 민감한 데이터를 전달하지 마십시오. 7. 학대를 방지하기 위해 입력 길이 검사 및 요금 제한을 구현합니다. 완전한 워크 플로우는 입력을 필터링하고 출력을 피하고 모든 입력이 잠재적으로 악의적이라고 가정하여 RAW $ \ _ get 입력이 안전하고 신뢰할 수있는 데이터로 변환되도록합니다.
사용자 입력을 안전하게 처리하는 것은 웹 개발의 가장 중요한 측면 중 하나입니다. PHP의 SuperGlobals 중에서 $_GET
URL 매개 변수에서 데이터를 검색하는 데 자주 사용되지만 제대로 처리되지 않은 경우 보안 취약점의 일반적인 진입 점이기도합니다. 이 가이드는 결정적인 실제 워크 플로를 안내하여 RAW $_GET
입력을 안전하고 유용한 데이터로 변환합니다.

1. 항상 $_GET
은 신뢰할 수 없다고 가정합니다
첫 번째 규칙 : 기본적으로 $_GET
데이터를 안전하게 취급하지 마십시오 . URL에서 오는 모든 값은 사용자 또는 공격자가 조작 할 수 있습니다. 링크가 서버 측면 생성 되더라도 사용자는 쿼리 문자열을 수동으로 변경할 수 있습니다.
예를 들어:

https://example.com/user.php?id=5
누군가를 변경할 수 있습니다.
https://example.com/user.php?id=999 '또는'1 '='1
그렇기 때문에 검증 및 살인 화가 협상 할 수없는 이유입니다.

2. 매개 변수가 있는지 확인하십시오
$_GET
매개 변수에 액세스하기 전에 정의되지 않은 인덱스 통지를 피하기 위해 항상 존재하는지 확인하십시오.
if (isset ($ _ get [ 'id'])) { $ raw_id = $ _get [ 'id']; } 또 다른 { // 누락 된 매개 변수를 처리합니다 다이 ( 'ID가 필요하다'); }
또는 클리너 구문을 위해 Null Coalescing을 사용하십시오.
$ raw_id = $ _get [ 'id'] ?? 널;
$raw_id
가 null
이면 리디렉션, 오류를 표시하거나 기본값을 적용 할 수 있습니다.
3. 예상 데이터 유형을 기반으로 소독합니다
매개 변수가 존재한다는 것을 알면 어떤 종류의 데이터를 기대하는지에 따라 소독하십시오.
정수의 경우 :
FILTER_SANITIZE_NUMBER_INT
와 함께 filter_var()
사용하십시오. 그러나 엄격한 유형 확인이 필요한 경우 FILTER_VALIDATE_INT
로 검증하십시오.
$ id = filter_var ($ _ get [ 'id'], filter_validate_int); if ($ id === false) { 다이 ( '유효하지 않은 ID'); }
참고 :
FILTER_SANITIZE_NUMBER_INT
정수를 보장하지 않습니다. 유효하지 않은 숯을 제거하지만123abc
와 같은 문자열을123
으로 둡니다. 유형 무결성이 중요 할 때 유효성 검사를 사용하십시오.
문자열 :
컨텍스트에 따라 흰색 스페이스를 다듬거나 스트립 또는 위험한 캐릭터를 탈출하십시오.
$ search = trim ($ _ get [ 'q'] ?? ''); $ search = filter_var ($ search, filter_sanitize_string, filter_flag_strip_low);
PHP 8.1 (더 이상 사용되지 않음)에서 FILTER_SANITIZE_STRING
피하십시오. 수동 청소를 고려하십시오.
$ search = htmlspecialchars (trim ($ _ get [ 'q'] ?? '', Ent_quotes, 'utf-8');
이렇게하면 HTML에서 출력을 위해 문자열이 준비되어 XSS가 방지됩니다.
부울 :
$ active = filter_var ($ _ get [ 'active'] ?? '', filter_validate_boolean);
"1", "true", "on"등에 대해 true
반환합니다.
4. 비즈니스 논리에 대해 검증하십시오
소독만으로는 충분하지 않습니다. 데이터가 맥락에서 의미하는지 여부를 확인해야합니다.
예를 들어, 페이지 번호를 기대하는 경우 :
$ page = filter_var ($ _ get [ 'page'] ?? 1, filter_validate_int, [ '옵션'=> [ 'default'=> 1, 'min_range'=> 1, 'max_range'=> 1000]] ]);
또는 허용 된 값에 대한 유효성 검사 :
$ sort = $ _get [ 'sort'] ?? '이름'; $ allend_sorts = [ 'name', 'date', 'price']; $ sort = in_array ($ sort, $ allend_sorts)? $ 정렬 : '이름';
5. 출력을 적절하게 탈출하십시오
소독 입력 후에도 컨텍스트에 따라 출력을 탈출합니다 .
- HTML 출력 :
htmlspecialchars()
- SQL 쿼리 : 준비된 진술을 사용합니다 (절대로 연결하지 마십시오)
- javaScript/json :
json_encode()
올바른 탈출 - urls : 매개 변수의 경우
urlencode()
HTML의 예 :
echo '<h1> 검색 :'. htmlspecialchars ($ search, ent_quotes, 'utf-8'). '</h1>';
PDO (SQL)의 예 :
$ stmt = $ pdo-> 준비 ( "id =??"); $ stmt-> execute ([$ id]);
6. HTTPS를 사용하고 $_GET
에서 민감한 데이터를 피하십시오
쿼리 문자열을 통해 민감한 데이터 (토큰, 암호, pii)를 전달하지 마십시오. 서버 로그, 브라우저 기록 및 참조자 헤더로 기록됩니다.
대신 $_POST
또는 세션을 사용하십시오.
또한 사이트에서 HTTPS를 사용하여 대중 교통 데이터를 암호화하는지 확인하십시오.
7. 필요한 경우 한계와 스로틀을 설정하십시오
$_GET
사용하는 공개 엔드 포인트의 경우 학대를 방지하기 위해 속도 제한 또는 입력 길이 제한을 고려하십시오.
if (strlen ($ _ get [ 'q'] ?? '')> 100) { 다이 ( '검색 쿼리가 너무 길다'); }
요약 워크 플로
완전한 안전한 워크 플로는 다음과 같습니다.
- ✅ 키가 있는지 확인하십시오 :
$_GET['key'] ?? null
- ✅ 유형 (int, string, bool)을 기반으로 소독
- provents 예상 형식 및 비즈니스 규칙에 대해 검증하십시오
- presppute 전에 탈출하거나 쿼리로 사용합니다
- hls URL의 민감한 데이터를 피하십시오
- https를 사용하고 남용을 모니터링하십시오
$_GET
사용하면 위험 할 필요가 없습니다. 징계 된 워크 플로 (사양, 검증 및 탈출)를 사용하면 원시적이고 위험한 입력을 안전하고 신뢰할 수있는 데이터로 바꿉니다. 키는 "간단한"매개 변수의 경우에도 단계를 건너 뛰는 것입니다.
기본적으로 : 필터 입력, 탈출 출력 및 모든 $_GET
값이 나가기 위해 나오라고 가정합니다.
위 내용은 원시 입력에서 안전한 데이터로 : PHP의 정의 워크 플로우 $ _get Superglobal의 상세 내용입니다. 자세한 내용은 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)

PHP에서 누락 된 $ _get 매개 변수를 효과적으로 처리하려면 입력을 먼저 검증하고 정리하고 기본값을 제공하고 유형 안전 방법을 사용하여 데이터에 액세스하고 사용자 친화적 인 방식으로 우아하게 실패해야합니다. 1. 항상 매개 변수가 존재하는지 확인하고 isset () 및 filter_input ()을 사용하여 ID가 양의 정수인지 확인하는 것과 같은 유형 및 형식을 확인하십시오. 2. 누락 된 충돌을 피하기 위해 페이징 또는 정렬 필드와 같은 선택적 매개 변수에 대한 안전한 기본값을 설정합니다. 3. $ _get에 직접 액세스하지 않으면 get_param () 및 get_int ()와 같은 함수를 NULL 병합 연산자와 결합하여 안전한 판독 값을 수행해야합니다. 4. 매개 변수가 유효하지 않은 경우 API는 400 상태 코드와 JSON 오류를 반환해야합니다.

$ _GetParameterscanfragmentCacheentries, redecachehitrates, andcaUsecdncachingInefficienciesBecaUsUceAceParameterCeateSadistInctUrl; 2.TomItigateCachingIssues, 정상화 파라미터, 제한 Maningfopercache-Concrache-Hea

NullCoalescing 연산자 (??)을 사용하여 $ _get 매개 변수에 대한 보안 액세스를 단순화하십시오. 1. 사용 ?? $ page = (int) ($ _ get [ 'page'] ?? 1)과 같은 isset () 확인 대신; 2. (int), trim (), in_array () 등과 같은 유형 변환, 문자열 청소 및 값 검증이 여전히 필요합니다.; 3. $ query = $ _ get [ 'search'] ?? $ _ get [ 'q'] ?? $ _ get [ 's']? 4.이 함수는 평가하기가 게으르지 않으며 변수 나 폐쇄로 지연되어야합니다. 5. 유형 안전 및 입력 검증 결합

theshiftfromraw $ _getToStructuredRequestObjectSimprovestableStableStailsInSteadOngloBalstate.2.ItenHancesConsconsencyandSaftyThroughBuiltSfordSfordEfaults, Sanitization, 및 Validation.3.itenablesframeworknlin

항상 $ \ _ getDataAsUntrusted; 2. CheckifTheparameterexistSusingIsset () OrnullCoalescing; 3.SanitizebasedOnexpectedType- usefil ter \ _validate \ _intforintegers, htmlspecialchars () forstrings, andfilter \ _validate \ _booleanforbooleans; 4. validateagainstbusinessl

filter_input () issaferthandirect $ _getAccessBalidatesandSanitizesinput, teencepejuggling, injectionattacks, andunexpectedbehavior.2.Itallowsecifying theInputSource, Type, and ValidationRules, returningfalseornullonforhand.

phpautomicallyparsesarray-likequerystringsintoStructured $ _getArrays, enablectomplexDataHandling.1.use? colors [] = red & colors [] = bluetogetindexedArrays.2.use? user [name] = alice & user [age] = 25forassociativearrays.3.nestwith? nestwith?

항상 ValidateAndesanitize $ _geinputusing filter_input () 또는 filter_var () andesescapeoutputwithhtmlspecialchars () topvrachtxss.2를 확인하십시오. USS
