PHP 양식 유효성 검사
HTML 양식 유효성 검사
고객으로부터 입력 정보를 수집하기 위해 양식을 사용할 때 고객이 규정에 맞는 콘텐츠를 입력할 것이라고 당연하게 여기지 마십시오. 예상되는. 고객 입력은 항상 엄격하게 확인되어야 합니다.
클라이언트 측 검증
클라이언트 측 양식 검증은 일반적으로 Javascript 스크립트 기반의 검증 방법입니다. 이 검증 방법은 서버의 부담을 효과적으로 줄이고 고객에게 입력을 즉시 알려줄 수도 있습니다. 오류.
서버측 확인
경우에 따라 클라이언트측 확인 외에도 서버측 확인(예: 데이터베이스 액세스)이 필요할 수 있습니다. 이때, PHP 프로그램에서 논리적 검증을 하여야 합니다.
PHP 양식을 다룰 때는 보안을 고려해야 합니다.
이 장에서는 해커와 스팸을 방지하기 위해 양식에 대한 데이터 보안 검증을 수행해야 합니다.
이 장에 소개된 HTML 양식에는 필수 및 선택 텍스트 필드, 라디오 버튼, 제출 버튼과 같은 입력 필드가 포함되어 있습니다.
코드 보기 »
위 양식 유효성 검사 규칙은 다음과 같습니다.
필드 필수입니다. +문자와 공백만 포함할 수 있습니다
이메일. + 유효한 이메일 주소여야 합니다('@' 및 '.' 포함)
URL 필수입니다. 있는 경우 유효한 URL이 포함되어야 합니다. 비고 필수입니다. 여러 줄 입력 필드(텍스트 필드)
텍스트 필드
'이름', '이메일', '웹사이트' 필드는 텍스트 입력 요소이고, '비고' 필드는 텍스트 영역입니다. HTML 코드는 다음과 같습니다.
“이름”: <input type="text" name="name">
">
웹사이트: <input type="text " name="website">
비고: <textarea name="comment"rows="5" cols="40"< /textarea>
~ >양식 요소
HTML 양식 코드는 다음과 같습니다.
htmlspecialchars ($ _ Server ["pHP_Self"];? & gt; "& gt;
이 양식은 Method =" Post " 방식을 사용하여 데이터를 제출합니다.
$_SERVER["PHP_SELF"] 변수는 무엇인가요?
$_SERVER["PHP_SELF"]는 다음을 반환하는 슈퍼 전역 변수입니다. 현재 문서 루트와 관련하여 실행된 스크립트의 파일 이름입니다.
따라서 $_SERVER["PHP_SELF"]는 다른 페이지로 이동하는 대신 현재 페이지로 양식 데이터를 보냅니다.
htmlspecialchars() 메서드는 무엇인가요?
에 대해 사전 정의된 문자는 다음과 같습니다.
&(앰퍼샌드)는 &"(큰따옴표)는 "
< (보다 작음) 됨<
> (보다 큼) 됨>
PHP 양식에서 주의가 필요한 사항 ?
$_SERVER["PHP_SELF"] 변수는 해커가 사용할 수 있습니다
해커가 크로스 사이트 스크립팅 HTTP 링크를 사용하여 공격하는 경우 $_SERVER["PHP_SELF"] 서버 변수도 스크립트에 포함됩니다. 그 이유는 크로스 사이트 스크립팅이 실행 파일 경로에 추가되어 $_SERVER["PHP_SELF"] 문자열에 HTTP 링크 뒤의 JavaScript 프로그램 코드가 포함되기 때문입니다.
XSS는 크로스 사이트 스크립팅 공격인 CSS(Cross-Site Script)라고도 합니다. 악의적인 공격자는 사용자가 페이지를 탐색할 때 악의적인 HTML 코드를 삽입하여 웹 페이지에 포함된 HTML 코드를 실행함으로써 악의적인 사용자의 특수한 목적을 달성합니다.
다음 양식 파일 이름을 "test_form.php"로 지정합니다.
<?php echo $_SERVER["PHP_SELF "];?>">
이제 URL을 사용하여 제출 주소 "test_form.php"를 지정합니다. 위 코드는 다음과 같이 수정됩니다.
단, 사용자가 브라우저 주소 표시줄에 다음 주소를 입력한다는 점을 고려하세요.
$_SERVER["PHP_SELF"]가 악용되는 것을 방지하는 방법은 무엇입니까?
$_SERVER["PHP_SELF"]는 htmlspecialchars() 함수를 사용하여 방지할 수 있습니다.
양식 코드는 다음과 같습니다.
htmlspecialchars() 미리 정의된 일부 문자를 HTML 엔터티로 변환합니다. 이제 사용자가 PHP_SELF 변수를 활용하려는 경우 결과는 다음과 같이 출력됩니다.
& lt; 양식 방법 = "게시물" 작업 = "test_form.php/& quot; & lt; 스크립트 & gt; 경고('해킹됨') & lt;/script & gt;
위 코드는 안전하며 페이지에 정상적으로 표시되거나 이메일에 삽입될 수 있습니다.
사용자가 양식을 제출하면 다음 두 가지 작업을 수행합니다.
다음으로 이러한 필터링 함수를 우리가 직접 정의한 함수에 작성하여 코드 재사용성을 크게 향상시키겠습니다.
함수 이름을 test_input()으로 지정합니다.
이제 test_input() 함수를 통해 $_POST의 모든 변수를 감지할 수 있습니다. 스크립트 코드는 다음과 같습니다.
Instance
<?php // 定义变量并默认设置为空值 $name = $email = $gender = $comment = $website = ""; if($_SERVER["REQUEST_METHOD"] == "POST") { $name = test_input($_POST["name"]); $email = test_input($_POST["email"]); $website = test_input($_POST["website"]); $comment = test_input($_POST["comment"]); $gender = test_input($_POST["gender"]); } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?>위 스크립트가 실행되면 $_SERVER["REQUEST_METHOD"]를 사용하여 양식이 제출되었는지 여부를 감지합니다. REQUEST_METHOD가 POST이면 양식이 제출되고 데이터의 유효성이 검사됩니다. 양식이 제출되지 않으면 유효성 검사를 건너뛰고 공백으로 표시됩니다. 위 예시에서 입력항목의 사용은 선택사항이며, 사용자가 아무런 데이터를 입력하지 않아도 정상적으로 표시될 수 있습니다. 다음 장에서는 사용자가 입력한 데이터의 유효성을 검사하는 방법을 소개합니다.