php防止注入漏洞,php防止sql注入漏洞代码
注入漏洞代碼和分析
先上代碼
<?php function customError($errno, $errstr, $errfile, $errline) { echo "Error number: [$errno],error on line $errline in $errfile
"; die();
} set_error_handler("customError",E_ERROR); $getfilter="'|(and|or)\\b.+?(>|||
{ $StrFiltValue=implode($StrFiltValue);
} if (preg_match("/".$ArrFiltReq."/is",$StrFiltValue)==1&&!isset($_REQUEST['securityToken']))
{
slog("
操作IP: ".$_SERVER["REMOTE_ADDR"]."
操作時間: ".strftime("%Y-%m-%d %H:%M:%S")."
操作頁面:".$_SERVER["PHP_SELF"]."
提交方式: ".$_SERVER["REQUEST_METHOD"]."
提交參數: ".$StrFiltKey."
提交數據: ".$StrFiltValue); print "result notice:Illegal operation!"; exit();
}
} foreach($_GET as $key=>$value)
{
StopAttack($key,$value,$getfilter);
} foreach($_POST as $key=>$value)
{
StopAttack($key,$value,$postfilter);
} foreach($_COOKIE as $key=>$value)
{
StopAttack($key,$value,$cookiefilter);
} function slog($logs) { $toppath="log.htm"; $Ts=fopen($toppath,"a+"); fputs($Ts,$logs."\r\n"); fclose($Ts);
} ?>
sql
分析
如果使用這個函數的話,這個函數會繞開PHP的標準出錯處理,所以說得自己定義報錯處理程序(die())。
其次,如果代碼執行前就發生了錯誤,那個時候用戶自定義的程序還沒有執行,所以就不會用到用戶自己寫的報錯處理程序。
那么,?PHP里有一套錯誤處理機制,可以使用?set_error_handler()?接管PHP錯誤處理,也可以使用?trigger_error()?函數主動拋出一個錯誤。
set_error_handler()?函數設置用戶自定義的錯誤處理函數。函數用于創建運行期間的用戶自己的錯誤處理方法。它需要先創建一個錯誤處理函數,然后設置錯誤級別。
關于的用法:
1 function customError($errno, $errstr, $errfile, $errline) 2 3 { 4 5 echo "錯誤代碼: [${errno}] ${errstr}\r\n"; 6 7 echo " 錯誤所在的代碼行: {$errline} 文件{$errfile}\r\n"; 8 9 echo " PHP版本 ",PHP_VERSION, "(" , PHP_OS, ")\r\n"; 10 11 // die(); 12 13 } 14 15 set_error_handler("customError",E_ALL| E_STRICT);
總結
以上是生活随笔為你收集整理的php防止注入漏洞,php防止sql注入漏洞代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java框架缓存,缓存框架(Java缓存
- 下一篇: matlab eeg信号处理,EEG数据