이 글에서는 PHP의 파일 시스템 보안, 데이터베이스 보안, 사용자 데이터 보안 및 기타 보안 관련 문제를 주로 소개합니다. 필요한 친구는 이를 참고할 수 있습니다
1. 루트가 있는 경우 파일 시스템 보안
php을 참조하세요. 권한이 있고 사용자가 스크립트에서 파일을 삭제할 수 있도록 허용된 경우 사용자가 필터링 없이 데이터를 제출하면 시스템 파일이 삭제될 가능성이 매우 높습니다
<?php // 从用户目录中删除指定的文件 $username = $_POST['user_submitted_name']; $userfile = $_POST['user_submitted_filename']; $homedir = "/home/$username"; unlink ("$homedir/$userfile"); echo "The file has been deleted!"; ?>
위 코드는 사용자가 제출한 $userfile 값이 다음과 같다고 가정합니다. ../etc/, 그러면 / etc 디렉터리가 삭제됩니다
파일 시스템 공격을 방지하기 위한 전략은 다음과 같습니다
PHP에 제한된 권한만 부여하세요
사용자가 제출한 변수는 모니터링 및 필터링되어야 하며 특수 문자를 포함할 수 없습니다. 파일 경로와 같은
파일을 조작(삭제)하기 위해 PHP를 사용하지 마십시오. 이와 관련하여 필요한 경우 사용자가 삭제할 수 있는 파일도 시스템에서 생성된 임의의 이름을 가져야 하며 사용자가 제어할 수 없습니다. . 데이터베이스 보안
데이터베이스 보안은 주로 sql 주입, 즉 sql 주입 공격을 방지합니다. 개선 데이터베이스 보안 전략은 다음과 같습니다.
루트 계정이나 데이터베이스 소유자 계정을 사용할 필요가 없습니다.
php의 pdo 확장을 사용하면 SQL 주입을 효과적으로 방지할 수 있습니다. PHP의 pdo 확장은 보안상의 이점 외에도 성능 측면에서도 큰 이점이 있습니다.http://php.net/manual/을 참조하세요. en/pdo.prepared-statements.php비밀번호 암호화 등 일부 민감한 정보 암호화
3. 사용자 데이터 필터링
사용자 데이터 필터링으로 XSS 및 CSRF 공격을 방지할 수 있습니다
화이트리스트 사용(사용자 입력은 고정 패턴) 예를 들어, 사용자 이름은 숫자와 문자만 사용할 수 있으며,
예 사용자 입력은 htmlentities 또는
htmlspecialchars 함수를 사용하여 처리됩니다. 입력 URL은 http가 아닌 들어오는 것을 허용하지 않습니다. 프로토콜 사용자 인증은 토큰 토큰(csrf)을 사용합니다.
http://htmlpurifier.org/ HTML Purifier는 XSS 공격을 방지하는 오픈 소스입니다. 효과적인 솔루션, 4. 기타 보안 전략
온라인 환경에서 오류 보고를 끄세요(
error_reporting,dislay_erros, php.ini에서 error_log 경로를 구성하여 오류 정보를 기록할 수 있습니다. 이는 가능한 사용자 공격을 발견하는 데 도움이 됩니다)
Register Globals, 더 이상 사용되지 않음(제거됨) 기능, 사용하지 않음 Magic quote 기능, 활성화하지 않음 PHP-5.4에서 제거되었습니다 최신 버전의 PHP를 사용해 보세요. 최신 버전에서는 알려진 많은 보안 취약점과 버그가 수정되었습니다.코드에서 위의 전략을 엄격히 준수하면 기본적으로 코드에 문제가 발생하지 않도록 할 수 있습니다. 많은 보안 허점이 있으며 일반적인 공격을 방지할 수 있습니다.
위 내용은 PHP의 4가지 주요 보안 전략을 알고 계시나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!