>  기사  >  백엔드 개발  >  PHP의 4가지 주요 보안 전략을 알고 계시나요?

PHP의 4가지 주요 보안 전략을 알고 계시나요?

怪我咯
怪我咯원래의
2017-07-05 10:32:461117검색

이 글에서는 PHP의 파일 시스템 보안, 데이터베이스 보안, 사용자 데이터 보안 및 기타 보안 관련 문제를 주로 소개합니다. 필요한 친구는 이를 참고할 수 있습니다

1. 루트가 있는 경우 파일 시스템 보안
php을 참조하세요. 권한이 있고 사용자가 스크립트에서 파일을 삭제할 수 있도록 허용된 경우 사용자가 필터링 없이 데이터를 제출하면 시스템 파일이 삭제될 가능성이 매우 높습니다

<?php
// 从用户目录中删除指定的文件
$username = $_POST[&#39;user_submitted_name&#39;];
$userfile = $_POST[&#39;user_submitted_filename&#39;];
$homedir = "/home/$username";
unlink ("$homedir/$userfile");
echo "The file has been deleted!";
?>

위 코드는 사용자가 제출한 $userfile 값이 다음과 같다고 가정합니다. ../etc/, 그러면 / etc 디렉터리가 삭제됩니다
파일 시스템 공격을 방지하기 위한 전략은 다음과 같습니다

PHP에 제한된 권한만 부여하세요
사용자가 제출한 변수는 모니터링 및 필터링되어야 하며 특수 문자를 포함할 수 없습니다. 파일 경로와 같은
파일을 조작(삭제)하기 위해 PHP를 사용하지 마십시오. 이와 관련하여 필요한 경우 사용자가 삭제할 수 있는 파일도 시스템에서 생성된 임의의 이름을 가져야 하며 사용자가 제어할 수 없습니다. . 데이터베이스 보안
데이터베이스 보안은 주로 sql 주입, 즉 sql 주입 공격을 방지합니다. 개선 데이터베이스 보안 전략은 다음과 같습니다.
루트 계정이나 데이터베이스 소유자 계정을 사용할 필요가 없습니다.

데이터베이스에 연결합니다. 데이터베이스를 사용하여 연결하는 사용자의 IP를 제한하세요

php의 pdo 확장을 사용하면 SQL 주입을 효과적으로 방지할 수 있습니다. PHP의 pdo 확장은 보안상의 이점 외에도 성능 측면에서도 큰 이점이 있습니다.http://php.net/manual/을 참조하세요. en/pdo.prepared-statements.php비밀번호 암호화 등 일부 민감한 정보 암호화

3. 사용자 데이터 필터링

사용자 데이터 필터링으로 XSS 및 CSRF 공격을 방지할 수 있습니다
화이트리스트 사용(사용자 입력은 고정 패턴)
예를 들어, 사용자 이름은 숫자와 문자만 사용할 수 있으며,

ctype_alnum 함수를 사용하여 판단할 수 있습니다

예 사용자 입력은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.