Php 주입의 보안 예방 위의 과정을 통해 우리는 Php 주입의 원리와 방법을 이해할 수 있으며, 이에 상응하는 예방 방법도 개발할 수 있습니다.
첫 번째는 서버의 보안 설정입니다. 이전에 Windows 서버의 보안 설정에 대해 이미 설명했으며 여기서 주요 내용은 php+mysql의 보안 설정과 Linux 호스트의 보안 설정입니다. . php+mysql 인젝션을 방지하려면 먼저 Magic_quotes_gpc를 On으로 설정하고 display_errors를 Off로 설정합니다. id 유형인 경우 코드와 같이 intval() 함수를 사용하여 정수 유형으로 변환합니다.
$id=intval($id);
mysql_query="select *from example where articieid='$id'"; 또는 다음과 같이 작성하십시오: mysql_query("SELECT * FROM Article WHERE articleid=".intval($id)."")
문자 유형인 경우 다음을 사용하십시오. addlashes() 필터링한 다음 다음과 같이 "%" 및 "_"를 필터링합니다.
$search=슬래시 추가($search);
$search=str_replace(“_”,”_”,$search);
$search=str_replace("%","%",$search);
물론, PHP 일반 주입 방지 코드를 추가할 수도 있습니다:
/********************************
PHP 일반 주입 방지 보안 코드 설명:
전달된 변수에 $_POST, $_GET 등의 잘못된 문자가 포함되어 있는지 확인
기능:
주사 방지
******************************/
//필터링할 잘못된 문자
$ArrFiltrate=array("'",";","union");
//오류 발생 후 이동할 URL입니다. 작성하지 않으면 이전 페이지가 기본값으로 설정됩니다.
$StrGoUrl="";
//배열에 값이 있는지 여부
함수 FunStringExist($StrFiltrate,$ArrFiltrate){
foreach($ArrFiltrate를 $key=>$value로){
if (eregi($value,$StrFiltrate)){
사실을 반환;
}
}
거짓을 반환;
}
//$_POST와 $_GET 병합
if(function_exists(array_merge)){
$ArrPostAndGet=array_merge($HTTP_POST_VARS,$HTTP_GET_VARS);
}또 다른{
foreach($HTTP_POST_VARS($key=>$value)){
$ArrPostAndGet[]=$값;
}
foreach($HTTP_GET_VARS as $key=>$value){
$ArrPostAndGet[]=$값;
}
}
//검증 시작
foreach($ArrPostAndGet as $key=>$value){
if (FunStringExist($value,$ArrFiltrate)){
echo "alert(/"Neeao 프롬프트, 잘못된 문자/");";
if (빈($StrGoUrl)){
echo "history.go(-1);";
}또 다른{
echo "window.location=/"".$StrGoUrl."/";";
}
출구;
}
}
?>
/********************************
checkpostandget.php www.devdao.com 으로 저장
그런 다음 각 PHP 파일 앞에 include("checkpostandget.php");를 추가합니다.
******************************/
또한 관리자 사용자 이름과 비밀번호는 md5로 암호화되어 PHP 주입을 효과적으로 방지할 수 있습니다.
서버와 mysql에서도 강화해야 할 몇 가지 보안 예방 조치가 있습니다.
Linux 서버의 보안 설정:
비밀번호를 암호화하려면 "/usr/sbin/authconfig" 도구를 사용하여 비밀번호 섀도우 기능을 켜고 비밀번호를 암호화하세요.
중요한 파일에 대한 액세스를 금지하려면 Linux 명령 인터페이스를 입력하고 프롬프트에 다음을 입력하십시오.
#chmod 600 /etc/inetd.conf //파일 속성을 600으로 변경
#chattr +I /etc/inetd.conf // 파일 소유자가 루트인지 확인
#chattr –I /etc/inetd.conf // 이 파일에 대한 변경 사항을 제한합니다.
사용자가 su 명령을 통해 루트 사용자로 변경하는 것을 금지하려면 su 구성 파일, 즉 /etc/pam.d/ 디렉터리의 시작 부분에 다음 두 줄을 추가합니다.
충분한 인증 /lib/security/pam_rootok.so 디버그
인증 필요 /lib/security/pam_whel.so 그룹=휠
특별계정 모두 삭제
#userdel lp 등 사용자 삭제
#groupdel lp 등. 사용하지 않는 suid/sgid 프로그램을 금지하려면 그룹을 삭제하세요.
#find / -type f (-perm -04000 - o –perm -02000 ) -execls –lg {} ;