PHP 양식 유효성 검사LOGIN

PHP 양식 유효성 검사


HTML 양식 유효성 검사

고객으로부터 입력 정보를 수집하기 위해 양식을 사용할 때 고객이 규정에 맞는 콘텐츠를 입력할 것이라고 당연하게 여기지 마십시오. 예상되는. 고객 입력은 항상 엄격하게 확인되어야 합니다.

클라이언트 측 검증

클라이언트 측 양식 검증은 일반적으로 Javascript 스크립트 기반의 검증 방법입니다. 이 검증 방법은 서버의 부담을 효과적으로 줄이고 고객에게 입력을 즉시 알려줄 수도 있습니다. 오류.

서버측 확인

경우에 따라 클라이언트측 확인 외에도 서버측 확인(예: 데이터베이스 액세스)이 필요할 수 있습니다. 이때, PHP 프로그램에서 논리적 검증을 하여야 합니다.

PHP 양식을 다룰 때는 보안을 고려해야 합니다.

이 장에서는 해커와 스팸을 방지하기 위해 양식에 대한 데이터 보안 검증을 수행해야 합니다.

이 장에 소개된 HTML 양식에는 필수 및 선택 텍스트 필드, 라디오 버튼, 제출 버튼과 같은 입력 필드가 포함되어 있습니다.

form1.jpg코드 보기 »

위 양식 유효성 검사 규칙은 다음과 같습니다.

필드                                               필수입니다. +문자와 공백만 포함할 수 있습니다
이메일. + 유효한 이메일 주소여야 합니다('@' 및 '.' 포함)

URL     필수입니다. 있는 경우 유효한 URL이 포함되어야 합니다. 비고 필수입니다. 여러 줄 입력 필드(텍스트 필드)

성별                                                                                                                                    하나를 선택해야 합니다.

먼저 순수 HTML 양식 코드를 살펴보겠습니다.

텍스트 필드

'이름', '이메일', '웹사이트' 필드는 텍스트 입력 요소이고, '비고' 필드는 텍스트 영역입니다. 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() 메서드는 무엇인가요?

htmlspecialchars() 함수는 미리 정의된 일부 문자를 HTML 엔터티로 변환합니다.


에 대해 사전 정의된 문자는 다음과 같습니다.

&(앰퍼샌드)는 &"(큰따옴표)는 "

'(작은따옴표)가 됩니다. ) be'

< (보다 작음) 됨<
> (보다 큼) 됨>

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"를 지정합니다. 위 코드는 다음과 같이 수정됩니다.

단, 사용자가 브라우저 주소 표시줄에 다음 주소를 입력한다는 점을 고려하세요.

                                                                                  ('해킹됨')%3C/script%3E                                                                      > 위의 URL은 다음 코드로 구문 분석되어 실행됩니다.

                                             "test_form.php/"><script>alert('hacked')</script>        >                                                              "test_form.php/">< ;스크립트>경고('해킹됨') 이 Javascript 코드는 페이지가 로드될 때 실행됩니다(사용자에게 팝업 상자가 표시됨). 이는 해커가 PHP_SELF 변수를 어떻게 악용할 수 있는지 보여주는 간단한 예입니다.

<script> 태그에는 모든 JavaScript 코드를 추가할 수 있습니다. 해커는 이를 이용해 페이지를 다른 서버로 리디렉션할 수 있습니다. 해당 코드는 악성 코드를 보호하거나 사용자의 양식 데이터를 얻을 수 있습니다.


$_SERVER["PHP_SELF"]가 악용되는 것을 방지하는 방법은 무엇입니까?

$_SERVER["PHP_SELF"]는 htmlspecialchars() 함수를 사용하여 방지할 수 있습니다.

양식 코드는 다음과 같습니다.

                                                                                   >

htmlspecialchars() 미리 정의된 일부 문자를 HTML 엔터티로 변환합니다. 이제 사용자가 PHP_SELF 변수를 활용하려는 경우 결과는 다음과 같이 출력됩니다.

& lt; 양식 방법 = "게시물" 작업 = "test_form.php/& quot; & lt; 스크립트 & gt; 경고('해킹됨') & lt;/script & gt;

<尝> Try 취약점이 실패했습니다!

PHP를 사용하여 양식 데이터 유효성 검사

먼저 PHP의 htmlspecialchars() 함수를 통해 사용자가 제출한 모든 데이터를 처리합니다.

htmlspecialchars() 함수를 사용할 때 사용자는 다음 텍스트 필드를 제출하려고 합니다: ;/script> 'http://www.php.cn')</script> 🎜>

위 코드는 안전하며 페이지에 정상적으로 표시되거나 이메일에 삽입될 수 있습니다.

사용자가 양식을 제출하면 다음 두 가지 작업을 수행합니다.

PHP Trim() 함수를 사용하여 사용자에서 불필요한 문자(예: 공백, 탭, 줄 바꿈)를 제거합니다. 입력 데이터).

PHP 스트립슬래시() 함수를 사용하여 사용자 입력 데이터에서 백슬래시()를 제거합니다


다음으로 이러한 필터링 함수를 우리가 직접 정의한 함수에 작성하여 코드 재사용성을 크게 향상시키겠습니다.

함수 이름을 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이면 양식이 제출되고 데이터의 유효성이 검사됩니다. 양식이 제출되지 않으면 유효성 검사를 건너뛰고 공백으로 표시됩니다.

위 예시에서 입력항목의 사용은 선택사항이며, 사용자가 아무런 데이터를 입력하지 않아도 정상적으로 표시될 수 있습니다.

다음 장에서는 사용자가 입력한 데이터의 유효성을 검사하는 방법을 소개합니다.

다음 섹션

<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>PHP中文网</title> </head> <body> <?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; } ?> <h2>PHP 表单验证实例</h2> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 名字: <input type="text" name="name"> <br><br> E-mail: <input type="text" name="email"> <br><br> 网址: <input type="text" name="website"> <br><br> 备注: <textarea name="comment" rows="5" cols="40"></textarea> <br><br> 性别: <input type="radio" name="gender" value="female">女 <input type="radio" name="gender" value="male">男 <br><br> <input type="submit" name="submit" value="Submit"> </form> <?php echo "<h2>您输入的内容是:</h2>"; echo $name; echo "<br>"; echo $email; echo "<br>"; echo $website; echo "<br>"; echo $comment; echo "<br>"; echo $gender; ?> </body>
코스웨어