PHP網頁防範SQL注入方法配置_PHP教程

來源:互聯網
上載者:User
前提條件是我們需要有伺服器的系統管理權限,就是可以修改php.ini檔案了,下面我來介紹修改php設定檔來防範SQL注入方法有需要學習的朋友可參考。

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

此外,在檔案還有一個很重要的配置選項,如果將其中的“magic_quotes_gpc”項設定為“On”,PHP 程式會自動將使用者提交的變數是含有的“'”、“"”、“”自動轉為含有反斜線的逸出字元。這個選項類似 ASP 程式中的參數過濾,可以對大部分字元型注入攻擊起到防範的作用。

一段程式非常不錯,如果你沒有伺服器系統管理權限

代碼如下 複製代碼

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);
}
}
?>

http://www.bkjia.com/PHPjc/629633.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/629633.htmlTechArticle前提條件是我們需要有伺服器的系統管理權限,就是可以修改php.ini檔案了,下面我來介紹修改php設定檔來防範SQL注入方法有需要學習的朋友可...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.