1. 등록된 전역변수 함수(register_globals)에 의존하지 마세요
등록된 전역변수의 등장으로 한때 PHP는 사용하기 매우 쉬워졌지만 보안도 저하되었습니다(편리함이 보안을 약화시키는 경우가 많습니다). 프로그래밍할 때 Register_globals 지시어를 끄는 것이 좋습니다. 이 함수는 PHP6에서도 취소됩니다.
2. 변수를 사용하기 전에 초기화하세요.
register_globals 기능이 활성화되면 프로그래머가 이를 사용하지 않더라도 악의적인 사용자가 변수 초기화 취약점을 악용하여 시스템에 침입할 수 있습니다. 예:
if(conditon){
$auth=TRUE;
}
이 단락 전에 변수 $auth가 FALSE로 초기화되지 않은 경우 사용자는 $_GET[' auth'를 전달할 수 있습니다. ], $_POST['auth'] 또는 $_COOKIE['auth'] 확인을 쉽게 구현할 수 있습니다.
3. 모든 입력 데이터를 확인하고 정제합니다.
4. 포함된 파일을 참조하기 위해 변수를 사용할 때는 주의하세요.
스크립트에 다음과 같은 코드가 있는 경우
require($page)
$page가 외부 리소스(예: $_GET)에서 제공되지 않는지 확인해야 합니다. 외부 리소스에서 가져온 것이라면 적절한 값이 포함되어 있는지 확인하세요.
5. 서버에서 명령을 실행하는 기능을 사용할 때는 주의하세요.
이러한 함수에는 eval(), exec(), system(), passthru(), popen() 및 backtick(``)이 포함됩니다. 이러한 함수는 서버에서 명령을 실행할 수 있으므로 함부로 사용해서는 안 됩니다. 명령에 변수를 포함해야 하는 경우 해당 변수에 대해 철저한 보안 검사를 수행해야 합니다. 추가 전처리를 위해 escapeshellarg() escapeshellcom()도 사용해야 합니다.
6. 기본 세션 디렉터리를 변경하거나 데이터베이스를 사용하여 세션 데이터를 저장하세요.
7. 업로드된 파일을 브라우저에서 제공하는 파일명을 사용하여 서버에 저장하지 마세요.
8. 제출된 데이터를 웹페이지에 다시 표시해야 하는 경우 HTML에 주의하세요. 더 중요한 것은 JAVASCRIPT
가
string htmlspecialchars( string string [, int quote_style [, string charset]])
제출된 데이터 처리
9. 사이트에 PHP 오류 메시지를 노출하지 마십시오.
PHP 오류 메시지는 개발 프로세스 중에 오류 메시지를 출력하여 검사를 용이하게 할 수 있지만, 웹에 노출되면 공격자의 진입점이 될 수 있습니다.
10. SQL 주입 공격을 방지합니다.
제출된 콘텐츠가 쿼리 작업을 중단하지 않도록 하려면 mysqli_real_escape_data()와 같은 언어별 데이터베이스 이스케이프 함수를 사용해야 합니다.
11. phpinfo() 스크립트를 서버에 저장하지 마세요.
위에서 내용의 측면을 포함하여 기본적인 PHP 보안을 달성하기 위한 PHP 보안 기술을 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.