程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP網頁防范SQL注入方法配置

PHP網頁防范SQL注入方法配置

編輯:關於PHP編程

前提條件是我們需要有服務器的管理權限,就是可以修改php.ini文件了,下面我來介紹修改php配置文件來防范SQL注入方法有需要學習的朋友可參考。

為了安全起見,可以打開“php.ini”文件的安全模式,設置“safe_mode=On”;顯示 PHP 執行錯誤信息的 “display_erros”選項如果打開的話,將會返回很多可利用的信息給入侵者,因此要將其設置為“display_erros=off”;這樣,PHP 函數執行錯誤後的信息將不會在客戶端的浏覽器中進行顯示。

    此外,在文件還有一個很重要的配置選項,如果將其中的“magic_quotes_gpc”項設置為“On”,PHP 程序會自動將用戶提交的變量是含有的“'”、“"”、“”自動轉為含有反斜線的轉義字符。這個選項類似 ASP 程序中的參數過濾,可以對大部分字符型注入攻擊起到防范的作用。

一段程序非常不錯,如果你沒有服務器管理權限

 代碼如下 復制代碼

<?php
class sqlsafe {
 private $getfilter = "'|(and|or)\b.+?(>|<|=|in|like)|\/\*.+?\*\/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)";
 private $postfilter = "\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|\/\*.+?\*\/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)";
 private $cookiefilter = "\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|\/\*.+?\*\/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)";
 /**
  * 構造函數
  */
 public function __construct() {
  foreach($_GET as $key=>$value){$this->stopattack($key,$value,$this->getfilter);}
  foreach($_POST as $key=>$value){$this->stopattack($key,$value,$this->postfilter);}
  foreach($_COOKIE as $key=>$value){$this->stopattack($key,$value,$this->cookiefilter);}
 }
 /**
  * 參數檢查並寫日志
  */
 public function stopattack($StrFiltKey, $StrFiltValue, $ArrFiltReq){
  if(is_array($StrFiltValue))$StrFiltValue = implode($StrFiltValue);
  if (preg_match("/".$ArrFiltReq."/is",$StrFiltValue) == 1){  
   $this->writeslog($_SERVER["REMOTE_ADDR"]."    ".strftime("%Y-%m-%d %H:%M:%S")."    ".$_SERVER["PHP_SELF"]."    ".$_SERVER["REQUEST_METHOD"]."    ".$StrFiltKey."    ".$StrFiltValue);
   showmsg('您提交的參數非法,系統已記錄您的本次操作!','',0,1);
  }
 }
 /**
  * SQL注入日志
  */
 public function writeslog($log){
  $log_path = CACHE_PATH.'logs'.DIRECTORY_SEPARATOR.'sql_log.txt';
  $ts = fopen($log_path,"a+");
  fputs($ts,$log."rn");
  fclose($ts);
 }
}
?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved