소개:
PHP는 동적 웹 사이트를 개발하기위한 강력한 기능과 유연성을 제공하는 널리 사용되는 서버 측 스크립팅 언어입니다. 그러나 PHP는 또한 사용 편의성과 유연성의 보안 문제가 있습니다. 이 기사는 몇 가지 일반적인 PHP 보안 취약점을 탐구하고 개발자가 샘플 코드를 통해 이러한 취약점에 대한 보호를 강화하도록 도와줍니다.
SQL 주입 공격은 일반적인 보안 취약점 중 하나입니다. 공격자는 SQL 문을 악의적으로 주입하여 데이터베이스에서 무단 작업을 수행 할 수 있습니다. SQL 주입을 방지하려면 전처리 된 문 및 매개 변수 결합을 사용하는 것이 좋습니다. 샘플 코드는 다음과 같습니다.
<?php // 사용자 입력에서 사용자 이름과 비밀번호를 얻습니다 $username = $_POST['username']; $password = $_POST['password']; // 데이터베이스에 연결하십시오 $db = new PDO('mysql:host=localhost;dbname=mydb', 'username', 'password'); // 전처리 문 및 매개 변수 바인딩을 사용하여 실행하십시오 SQL 질문 $stmt = $db-> repay ( 'select * username = : username and password = : password'); $ stmt-> bindValue ( ': username', $ username); $ stmt-> bindValue ( ': password', $ password); $ stmt-> execute (); // 쿼리 결과를 가져옵니다. user $ user = $ stmt-> fetch (); // 쿼리 결과가 비어 있으면 (! $ user) {IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IN Echo "유효하지 않은 사용자 이름 또는 비밀번호"; } 또 다른 { 에코 "환영합니다". $ user [ 'username']. "!"; } ?>
XSS (크로스 사이트 스크립팅 공격)는 공격자가 악성 스크립트를 주입하여 사용자의 민감한 정보를 훔칠 수있는 또 다른 일반적인 보안 취약점입니다. XSS 공격을 방지하는 효과적인 방법은 HTML 특수 사용자 입력 문자를 피하는 것입니다. 샘플 코드는 다음과 같습니다.
<?php // 사용자 입력에서 댓글 내용을 가져옵니다 $comment = $_POST['comment']; // 의견 내용을 수행하십시오 HTML 특별 캐릭터 탈출 $escapedComment = htmlspecialchars($comment); // 데이터베이스에 주석을 저장합니다 $db-> query ( "댓글에 삽입 (내용) 값 ( '$ ESCAPEDCOMMENT')"); ?>
파일 업로드 취약점을 통해 공격자는 악성 파일을 업로드하여 서버에서 임의의 코드를 실행할 수 있습니다. 파일 업로드 취약점을 방지하려면 파일의 유형과 크기가 제한되어야합니다. 다음은 업로드 된 파일의 유형 및 크기를 제한하는 방법을 보여주는 샘플 코드입니다.
<?php // 업로드 된 파일에서 관련 정보를 얻습니다 $fileName = $_FILES['file']['name']; $fileSize = $_FILES['file']['size']; $fileTmp = $_FILES['file']['tmp_name']; $fileError = $_FILES['file']['error']; // 파일 유형과 크기를 확인하십시오 $fileExt = pathinfo($fileName, PATHINFO_EXTENSION); $allowedTypes = array('jpg', 'jpeg', 'png'); $maxSize = 1000000; // 1MB if (!in_array($fileExt, $allowedTypes) || $fileSize > $ maxsize) { Echo "유효하지 않은 파일 유형 또는 크기"; } 또 다른 { // 지정된 디렉토리로 파일을 저장하면서 koz_uploaded_file ($ filetmp, 'uploads/'. $ filename); Echo "파일이 성공적으로 업로드되었습니다."; } ?>
PHP 보안은 개발자에게 중요합니다. 올바른 오류 처리 및 보호 조치를 통해 공통 보안 취약점을 효과적으로 줄일 수 있습니다. 예를 들어, 전처리 된 문 및 매개 변수 바인딩을 사용하면 SQL 주입을 방지하고 HTML 특수 문자 이스케이프를 사용하면 XSS 공격으로부터 보호 할 수 있으며 파일 유형과 크기를 제한하면 파일 업로드 취약점을 방지 할 수 있습니다. 경고를 유지하고 적절한 보안 조치를 취 함으로써만 응용 프로그램 및 사용자의 데이터를 효과적으로 보호 할 수 있습니다.