當前位置:首頁 » 編程語言 » 防止sql注入函數

防止sql注入函數

發布時間: 2025-07-03 14:27:56

php防止sql注入示例分析和幾種常見攻擊正則

1. 函數 `customError` 用於處理錯誤,將自定義錯誤輸出並停止腳本執行。
2. 設置了錯誤處理函數 `customError`,它將捕捉並處理 E_ERROR 級別的錯誤。
3. `$getfilter`、`$postfilter` 和 `$cookiefilter` 變數定義了正則表達式模式,用於檢測惡意的 SQL 注入嘗試。
4. 函數 `StopAttack` 用於阻止潛在的 SQL 注入攻擊。它檢查通過 GET、POST 和 COOKIE 傳遞的參數。
5. 如果 `$_REQUEST['securityToken']` 未設置,且參數值與定義的模式匹配,`StopAttack` 函數將記錄攻擊日誌並終止腳本執行。
6. `slog` 函數用於記錄日誌,將日誌信息追加到 `log.htm` 文件中。
注意:這段代碼雖然是為了防止 SQL 注入而設計的,但它使用了正則表達式來過濾參數,這可能會對合法輸入造成誤攔截。在實際應用中,更推薦使用參數化查詢和准備語句來防止 SQL 注入。

② php防sql注入漏洞可以用什麼函數

1.函數的構建
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;
}
2.函數的使用實例
<?php
if (inject_check($_GET['id']))
{
exit('你提交的數據非法,請檢查後重新提交!');
}
else
{
$id = $_GET['id'];
//處理數據………………
}
?>

③ 怎樣利用instr()函數防止SQL注入攻擊

學asp一段時間,面臨SQL注入攻擊問題,需利用instr()函數預防。instr()函數用於查找字元串中特定字元或字元串首次出現的位置。具體代碼如下:




If instr(Request("id")," ")>0 or instr(Request("id"),"'")>0 then response.redirect "index.asp"


instr()函數語法如下:




InStr([start, ]string1, string2[, compare])


該函數參數包括:

- start:可選,設置搜索開始位置,默認從第一個字元開始。若為Null,將出現錯誤。必須有compare參數時提供。

- string1:必選,搜索的字元串表達式。

- string2:必選,要搜索的字元串表達式。

- compare:可選,指示比較類型,默認為二進制比較。值為:

- vbBinaryCompare:0,執行二進制比較。

- vbTextCompare:1,執行文本比較。


instr()函數返回值如下:

- 返回字元串在另一個字元串中首次出現的位置。

- 若未找到匹配字元串,返回0。

- 若參數為Null,返回Null。


示例使用instr()查找字元串:




Dim SearchString, SearchChar, MyPos

SearchString = "XXpXXpXXPXXP" '要搜索的字元串

SearchChar = "P" '搜索字元

MyPos = instr(4, SearchString, SearchChar, 1) '文本比較從第四個字元開始,返回6

MyPos = instr(1, SearchString, SearchChar, 0) '二進制比較從第一個字元開始,返回9

MyPos = instr(SearchString, SearchChar) '默認二進制比較,返回9

MyPos = instr(1, SearchString, "W") '二進制比較從第一個字元開始,返回0(未找到)


instr()函數主要用於檢查用戶輸入中是否包含特定字元或字元串,如空格、單引號等。若instr(Request("id")," ")>0或instr(Request("id"),"'")>0,則可能遭受SQL注入攻擊。通過在代碼中添加instr()函數,可以有效防止攻擊。


例如:




If instr(Request("id")," ")>0 or instr(Request("id"),"'")>0 then response.redirect "index.asp"


這段代碼檢查了用戶輸入中是否包含空格或單引號,若存在,則直接重定向到"index.asp",避免SQL注入攻擊。這種方法簡單有效,無需在檢查列表中添加所有可能的攻擊字元。只需確保檢查了關鍵字元,如空格、單引號、分號等,即可有效防禦SQL注入。


總結:利用instr()函數,根據輸入字元串中特定字元的出現情況,可以有效防止SQL注入攻擊。通過簡單檢查空格和單引號的出現,即可實現基本的安全防禦。這種方法適用於預防基礎的SQL注入嘗試,確保代碼安全運行。

熱點內容
計算數據存儲地址 發布:2025-07-03 18:48:29 瀏覽:711
安卓恢復出廠設置如何退出 發布:2025-07-03 18:40:41 瀏覽:695
家用電腦和網吧電腦做成伺服器 發布:2025-07-03 18:22:07 瀏覽:856
jsp刷新緩存 發布:2025-07-03 18:18:06 瀏覽:924
機房伺服器啟動不起來是什麼原因 發布:2025-07-03 18:18:02 瀏覽:445
腳本召喚坐騎攻略 發布:2025-07-03 18:17:59 瀏覽:230
皓影智享加裝哪些配置好 發布:2025-07-03 17:54:44 瀏覽:616
mongodbjava 發布:2025-07-03 17:54:31 瀏覽:100
外鍵約束sql語句 發布:2025-07-03 17:51:04 瀏覽:459
struts2上傳文件大小限制 發布:2025-07-03 17:51:01 瀏覽:522