> php教程 > PHP开发 > PHP 애플리케이션 보안 예방 기술 연구

PHP 애플리케이션 보안 예방 기술 연구

黄舟
풀어 주다: 2016-12-14 13:38:54
원래의
1169명이 탐색했습니다.

PHP 보안 예방 프로그램 모델

다음과 같이 코드를 복사하세요:
 /* PHP anti-injection cross-site V1.0
페이지 상단에 추가: require("menzhi_injection .php") ;
SQL 주입 및 XSS 사이트 간 취약점을 보편적으로 예방할 수 있습니다.
 ################결함 및 개선사항#################
아직 결함이 많습니다. 프로그램 개선에 도움을 주시기 바랍니다
#################참고 및 감사의 글############### ###
Neeao'ASP SQL 범용 주입 방지 프로그램 V3.0
코드의 일부는 Discuz에서 참조되었습니다.
*/
error_reporting(0)
정의('MAGIC_QUOTES_GPC) ', get_magic_quotes_gpc());
$menzhi_injection="'|;|and|(|)|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|or| char|declare";
$ menzhi_injection = 폭발("|",$menzhi_injection);
foreach(array('_GET', '_POST', '_COOKIE','_REQUEST') as $_request) {
foreach($$_request as $ _key => $_value) {
//$_value = strtolower($_value)
$_key{0} != '_' && $$_key = Daddslashes( $_value);
foreach ($menzhi_injection as $kill_key => $kill_value) {
 if(substr_count($_value,$kill_value)>0) {
 echo ""
설정 해제 ($_value);
종료();
 }
 }
 //echo "
 ".$_value; !MAGIC_QUOTES_GPC) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = Daddslashes($val);
 }
 } else {
  $string = addlashes($string); |x[a-fA-F0-9]{4}));)/', '&\1',str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string));
$string 반환;
}
?>

SQL 삽입 및 XSS 사이트 간 취약점을 방지하려면 페이지 상단에 "require("menzhi_injection.php");"를 추가하세요. 이 프로그램을 호출하려면 include() 대신 require()를 사용합니다. require()가 호출한 파일에 오류가 발생하면 프로그램이 종료되고 include()는 이를 무시하기 때문입니다. 그리고 require()가 파일을 호출하면 프로그램이 실행되자마자 외부 파일이 먼저 호출됩니다. Inculde()는 이 줄에 도달할 때만 실행을 시작합니다. 함수 특성에 따라 require()를 선택합니다. 더 나은 방어 효과를 얻기 위해 실제 필요에 따라 $menzhi_injection 변수에서 필터 문자를 추가하거나 삭제할 수도 있습니다. 또한 코드를 직접 수정할 수도 있으며 예상치 못한 결과를 얻을 수도 있습니다. 다음 테스트는 단지 조롱을 위한 것입니다. 다음은 한 문장 트로이 목마의 테스트 효과입니다.
야, 유혹을 받으면 페이지 상단에 전화하십시오. "require("menzhi_injection.php");"를 기억하세요. 모두의 흥미를 불러일으키기 위한 속임수이므로 직접 테스트해 보시기 바랍니다.
하자 및 개선사항
이 프로그램은 외부 호출일 뿐이고, 외부에서 제출한 변수만 처리하고, 지원서에 대한 체계적인 분석을 진행하지 않기 때문에 한계가 많으므로 꼭 활용하시기 바랍니다. 주의. GBK 인코딩을 사용하는 프로그램의 경우 이 프로그램이 이 취약점을 처리할 수 있지만 더블바이트 인코딩 취약점이 발생할 위험도 있습니다. 하지만 이러한 허점을 억제하려면 여전히 근본 원인부터 시작해야 합니다. 데이터베이스 연결 파일을 처리해야 하는 경우 Character_set_client=binary를 추가할 수 있습니다. Discuz!7.0의 데이터베이스 연결 클래스인 db_mysql.class.php가 잘 작성되어 있으니 참고하시면 됩니다. 물론 이것이 이 작은 프로그램의 범위는 아닙니다.
그리고 이 프로그램은 $_SERVER $_ENV $_FILES 시스템 변수를 필터링하지 않습니다. 예를 들어 $_SERVER['HTTP_X_FORWARDED_FOR'] 시스템이 IP를 획득하면 해커가 원래 HTTP 요청 패킷을 하이재킹하고 수정하여 해당 값을 변경할 수 있습니다. 이 프로그램은 이러한 취약점을 처리할 수 있습니다. 하지만 프로그래머로서 우리에게 필요한 것은 외부 변수를 근본 원인부터 다루고, 그런 일이 일어나기 전에 미리 예방하고, 예방 조치를 취하는 것입니다.
이 프로그램은 매우 지저분합니다. 누구나 테스트하고 사용할 수 있습니다. 의견이나 제안 사항이 있으면 토론을 위해 메시지를 남길 수 있습니다.

결론

마지막으로, 여러분의 학업과 업무 모두 성공하시길 기원합니다. 더 많은 관련 글을 보고 싶으시다면 PHP 중국어 홈페이지(www.php.cn)를 주목해주세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿