>백엔드 개발 >PHP 튜토리얼 >간단하고 실용적인 PHP 방지 주입 클래스 example_php 기술

간단하고 실용적인 PHP 방지 주입 클래스 example_php 기술

WBOY
WBOY원래의
2016-05-16 20:28:58928검색

이 기사의 예에서는 간단하고 실용적인 PHP 방지 주입 클래스를 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 내용은 다음과 같습니다.

PHP 안티 인젝션에서 필터링되는 정보는 기본적으로 get, post이며 sql은 일반적으로 사용되는 query, insert 등의 sql 명령입니다. 아래에서는 이 예제가 도움이 되기를 바랍니다. 웹사이트는 보안을 제공합니다.

PHP 주입 방지 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
/**
* 매개변수 처리 클래스
* @author JasonWei
​*/
클래스 매개변수
{
공개 $get = 배열()

공개 $포스트 = 배열()

함수 __construct()
{
if (!emptyempty($_GET)) {
foreach ($_GET as $key => $val) {
if (is_numeric($val)) {
$this->get[$key] = $this->getInt($val)
} 다른 {
$this->get[$key] = $this->getStr($val)
}
}  
}
if (!emptyempty($_POST)) {
foreach ($_POST as $key => $val) {
if (is_numeric($val)) {
$this->post[$key] = $this->getInt($val)
} 다른 {
$this->post[$key] = $this->getStr($val)
}
}  
}
}

공개 함수 getInt($number)
{
return intval($숫자)
}

공개 함수 getStr($string)
{
if (!get_magic_quotes_gpc()) {
$string = addlashes($string)
}
$string 반환
}

공개 함수 checkInject($string)
{
return eregi('select|insert|update|delete|/*|*|../|./|union|into|load_file|outfile', $string); }

공개 함수 verifyId($id = null)
{
if (!$id || $this->checkInject($id) || !is_numeric($id)) {
$id = 거짓
} 다른 {
$id = intval($id)
}
$id 반환
}
}
?>
예제 2의 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
/*************************
설명:
전달된 변수에 잘못된 문자가 포함되어 있는지 확인
 
예: $_POST, $_GET
기능:  
주사방지
*************************/ 
//필터링할 잘못된 문자
$ArrFiltrate=array("'","or","and","union","where"); 
//오류 발생 후 이동할 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);  
}else{ 
foreach($HTTP_POST_VARS($key=>$value){  
$ArrPostAndGet[]=$value;

foreach($HTTP_GET_VARS as $key=>$value){ 
$ArrPostAndGet[]=$value;


//검증 시작
foreach($ArrPostAndGet as $key=>$value){ 
if (FunStringExist($value,$ArrFiltrate)){ 
echo ""; 
if (비어 있음($StrGoUrl)){ 
echo "history.go(-1);";
}else{ 
echo "window.location='".$StrGoUrl."';";

종료; 


/*****************PHP 주입 방지 종료*******************/ 
?>

이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.

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