1樓:小雞再次
額,這是我老師給的答案
答:過濾一些常見的資料庫操作關鍵字,
select ,insert,update,delete,and,*等或通過系統函式addslashes對內容進行過濾
php配置檔案中register_globals=off;設定為關閉狀態.(作用將註冊全域性變數關閉);如接收post表單的值使用$_post['user'],假設設定為on的話$user才接收值
sql語句書寫的時候儘量不要省略小引號(tab上面那個)和單引號
提高資料庫命名技巧,對於一些重要的欄位根據程式的特點命名,使之不易被猜中
對於常的方法加以封裝,避免直接暴漏sql語句
開啟php安全模式safe_mode=on
開啟magic_quotes_gpc來防止sql注入,預設為關閉,開啟後自動把使用者提交sql查詢語句進行轉換把"'"轉換成"\'"
控制錯誤資訊輸出,關閉錯誤資訊提示,將錯誤資訊寫到系統日誌
使用mysqli或pdo預處理
2樓:匿名使用者
這個方法比較多,這裡簡單舉個例子:
提交的變數中所有的 ' (單引號), " (雙引號), \ (反斜線) and 空字元會自動轉為含有反斜線的轉義字元,給sql注入帶來不少的麻煩。
請看清楚:「麻煩」而已~這並不意味著php防範sql注入,書中就講到了利用改變注入語句的編碼來繞過轉義的方法,比如將sql語句轉成ascii編碼(類似:char(100,58,92,108,111,99,97,108,104,111,115,116…)這樣的格式),或者轉成16進位制編碼,甚至還有其他形式的編碼,這樣以來,轉義過濾便被繞過去了
// 去除轉義字元
function stripslashes_array($array)
} else if (is_string($array)) return $array;
}@set_magic_quotes_runtime(0); // 判斷 magic_quotes_gpc 狀態
if (@get_magic_quotes_gpc())
php防範sql注入的**
$keywords = addslashes($keywords); $keywords =
str_replace("_","\_",$keywords);//轉義掉」_」 $keywords =
str_replace("%","\%",$keywords);//轉義掉」%」
3樓:小花貓段**
php防止sql注入是一個比較低階的問題了,這個問題其實在我大一上學期做第一個個人部落格的時候就已經關注過了,不過簡單的說一下關於php防注入的方式吧。
使用pdo防注入。
這是最簡單直接的一種方式,當然低版本的php一般不支援pdo方式去操作,那麼就只能採用其它方式。
採用escape函式過濾非法字元。
escape可以將非法字元比如 斜槓等非法字元轉義,防止sql注入,這種方式簡單粗暴,但是不太建議這麼用。
自己手寫過濾函式,手寫一個php sql非法引數過濾函式來說還是比較簡單的,但是你的函式需要非常的健壯,不讓仍然有可能被非法黑客攻擊;你的codin**平直接決定了你的函式的健壯性。
各種框架裡面其實都有對於非法字元過濾的支援,最簡單的比如thinkphp,你可以直接防止注入。
寫一個php擴充套件對於進入引數進行有選擇的過濾。 開發一個php擴充套件是對於一個php高階程式設計師必備的技能,將你需要的功能打包在php擴充套件裡面,就像黑詞過濾一樣進行檢查,是非常方便的。一般都是用在自己寫框架路由器**的時候,如果你用擴充套件實現框架的路由器**的話,可以順便將引數過濾加入到php擴充套件裡面,通過c去實現。
對於現在的防注入技術其實已經成熟了,對於一個站點該關心的不是防注入了,而是大規模高併發如何處理的問題,或者關於各種其他漏洞,比如現在世界上仍然有百分之80使用redis的站點存在redis漏洞,通過redis漏洞可以直接拿到機器的訪問許可權,一般來說都是直接給你種一個挖礦機器人來。
SQL隱碼攻擊漏洞的判斷
如果以前沒玩過注入,請把ie選單 工具 internet選項 高階 顯示友好http錯誤資訊前面的勾去掉。為了把問題說明清楚,以下以asp?id xx target blank http www.id xx 這個地址是假想的 為例進行分析,xx可能是整型,也有可能是字串。1 整型引數的判斷 當輸入的...
解釋什麼是sql注入,xss漏洞
所謂sql注入,就是通過把sql命令插入到web表單提交或輸入域名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。而xss漏洞,就是跨站指令碼攻擊,是一種在web應用中的電腦保安漏洞,它允許惡意web使用者將 植入到提供給其它使用者使用的頁面中。xss csrf sql 什麼是sql注...
SQL隱碼攻擊中整型引數和字串型引數是什麼有什麼區別嗎
我幫你解釋以下吧,我只比較瞭解數字型的。2 如果存在注入漏洞 and 後面是1 1,1 1是邏輯值真,所以所以網頁返回正常,與原來的網頁相同。3 and後面是1 2是邏輯值假,整個語句就是假,所以返回異常的頁面。判斷出存在注入漏洞後,就可以構造sql語句猜解了。sql資料庫可以運用一種叫做爆欄位的方...