인터넷의 빠른 개발로 점점 더 많은 웹 사이트가 PHP를 개발 언어로 선택합니다. 그러나 PHP의 개방성과 유연성은 해커의 목표 중 하나입니다. 악의적 인 파일 업로드 공격은 공격하는 가장 일반적인 방법 중 하나입니다. 해커는 악성 코드가 포함 된 파일을 업로드하여 웹 사이트를 제어하거나 사용자로부터 민감한 정보를 훔칠 수 있습니다. PHP 웹 사이트의 보안을 보장하기 위해이 기사는 몇 가지 효과적인 보호 방법과 샘플 코드를 소개합니다.
먼저 업로드 된 파일의 유형을 확인하고 불법 파일 업로드를 피하기 위해 업로드 할 수있는 파일 유형을 제한해야합니다. PHP의 $ _files 변수를 통해 업로드 된 파일 유형을 가져와 허용 유형과 비교할 수 있습니다. 간단한 예제 코드는 다음과 같습니다.
<?php<br> $ alludtypes = array ( 'image/jpeg', 'image/png', 'image/gif');<br> $ uploadedFileType = $ _files [ 'file'] [ 'type'];<br> if (in_array ($ uploadedFileType, $ alluctTypes)) {<br> // 파일 업로드 로직을 계속 처리합니다<br> } 또 다른 {<br> echo '이미지 파일 만 업로드';<br> }<br> ?>
파일 유형을 확인하는 것 외에도 업로드 된 파일의 크기를 제한해야합니다. 업로드 된 파일의 크기를 제한함으로써 해커는 너무 큰 파일 업로드, 서버 리소스에 영향을 미치거나 악의적 인 작업을 수행하는 것을 방지 할 수 있습니다. 해당 코드 예는 다음과 같습니다.
<?php<br> $ maxfilesize = 1024 * 1024; // 1MB로 제한합니다<br> $ uploadedFilesize = $ _files [ 'file'] [ 'size'];<br> if ($ uploadedFilesize <= $ maxFilesize) {<br> // 파일 업로드 로직을 계속 처리합니다<br> } 또 다른 {<br> Echo '파일 크기 업로드 한계를 초과합니다';<br> }<br> ?>
악성 파일 업로드 및 실행을 방지하기 위해 업로드 된 파일의 이름과 경로를 수정할 수 있습니다. 사용자가 직접 업로드 한 원본 파일 이름을 사용하는 대신 타임 스탬프 또는 임의의 문자열을 사용하여 새 파일 이름을 생성합니다. 또한 업로드 된 파일에 직접 액세스하지 않도록 업로드 된 파일을 WEB가 아닌 루트 디렉토리에 저장하는 것이 좋습니다. 다음은 관련 코드 예제입니다.
<?php<br> $ uploadDirectory = '/path/to/upload/폴더/'; // 실제 업로드 파일 디렉토리로 수정하십시오<br> $ uploadedFilename = time (). '_'. 랜드 (1000, 9999). '_'. $ _files [ 'file'] [ 'name'];<br> $ uploadedFilePath = $ uploadDirectory. $ uploadedFileName;<br> if (move_uploaded_file ($ _ files [ 'file'] [ 'tmp_name'], $ uploadedFilePath)) {<br> // 파일 업로드가 성공하고 다른 비즈니스 로직을 계속 처리합니다.<br> } 또 다른 {<br> Echo '파일 업로드 실패';<br> }<br> ?>
화이트리스트를 만들어 파일을 업로드하도록 제한하십시오. 합법적 인 사용자 만 업로드 요청의 IP 주소를 확인하여 화이트리스트와 일치시켜 파일을 업로드 할 수 있는지 확인할 수 있습니다. 다음은 관련 샘플 코드입니다.
<?php<br> $ alludips = array ( '127.0.0.1', '192.168.0.1'); // 신뢰할 수있는 IP 주소로 수정합니다<br> $ uploadedip = $ _server [ 'remote_addr'];<br> if (in_array ($ uploadedip, $ alluctips)) {<br> // 파일 업로드 로직을 계속 처리합니다<br> } 또 다른 {<br> Echo '파일 업로드 허가 없음';<br> }<br> ?>
위의 측정을 통해 PHP 웹 사이트는 악의적 인 파일 업로드 공격을 크게 방지 할 수 있습니다. 그러나 웹 사이트 보안은 지속적인 업데이트와 향상된 보호 조치가 필요한 지속적인 프로세스입니다. 최신 PHP 버전을 사용하고 경고를 유지하는 시스템 취약점을 정기적으로 패치하는 것이 웹 사이트 보안을 보장하는 중요한 단계입니다.