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

php簡單實現sql防注入的方法

編輯:PHP綜合

本文實例講述了php簡單實現sql防注入的方法。分享給大家供大家參考,具體如下:

這裡沒有太多的過濾,主要是針對php和mysql的組合。

一般性的防注入,只要使用php的 addslashes 函數就可以了。

以下是一段copy來的代碼:

PHP代碼:

$_POST = sql_injection($_POST);
$_GET = sql_injection($_GET);
function sql_injection($content)
{
if (!get_magic_quotes_gpc()) {
if (is_array($content)) {
foreach ($content as $key=>$value) {
$content[$key] = addslashes($value);
}
} else {
addslashes($content);
}
}
return $content;
}

做系統的話,可以用下面的代碼,也是copy來的。

PHP代碼:

function inject_check($sql_str) {
 return eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str);  // 進行過濾
}
function verify_id($id=null) {
 if (!$id) { exit('沒有提交參數!'); }  // 是否為空判斷
 elseif (inject_check($id)) { exit('提交的參數非法!'); }  // 注射判斷
 elseif (!is_numeric($id)) { exit('提交的參數非法!'); }  // 數字判斷
 $id = intval($id);  // 整型化
 return $id;
}
function str_check( $str ) {
 if (!get_magic_quotes_gpc()) {  // 判斷magic_quotes_gpc是否打開
  $str = addslashes($str);  // 進行過濾
 }
 $str = str_replace("_", "\_", $str);  // 把 '_'過濾掉
 $str = str_replace("%", "\%", $str);  // 把 '%'過濾掉
 return $str;
}
function post_check($post) {
 if (!get_magic_quotes_gpc()) {  // 判斷magic_quotes_gpc是否為打開
  $post = addslashes($post);  // 進行magic_quotes_gpc沒有打開的情況對提交數據的過濾
 }
 $post = str_replace("_", "\_", $post);  // 把 '_'過濾掉
 $post = str_replace("%", "\%", $post);  // 把 '%'過濾掉
 $post = nl2br($post);  // 回車轉換
 $post = htmlspecialchars($post);  // html標記轉換
 return $post;
}

更多關於PHP相關內容感興趣的讀者可查看本站專題:《php程序設計安全教程》、《php安全過濾技巧總結》、《PHP運算與運算符用法總結》、《PHP網絡編程技巧總結》、《PHP基本語法入門教程》、《php操作office文檔技巧總結(包括word,excel,access,ppt)》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

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