WEB安全-SQL注入
什麼是SQL注入
所謂SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令。具體來說,它是利用現有應用程式,將(惡意的)SQL命令注入到後臺資料庫引擎執行的能力,它可以通過在Web表單中輸入(惡意)SQL語句得到一個存在安全漏洞的網站上的資料庫,而不是按照設計者意圖去執行SQL語句。
為什麼會產生SQL注入?
沒有對使用者的輸入字元進行過濾
伺服器或資料庫沒有做相應的安全配置
攻擊者可以偽造資料結構
SQL注入的方式 : post get cookie
get注入:
http://www.xxx.com/news.php?id=1’
http://www.xxx.com/news.php?id=1 and 1=1 返回正常
http://www.xxx.com/news.php?id=1 and 1=2 返回錯誤
post注入:
1.利用mysql命令中的關鍵字
admin’#
admin’–
‘or 1=1 #
2.post資料包
sql注入防禦:
一、過濾
1、trim():函式過濾掉頭和尾的空格
2、Htmlspecialchars():函式把預定義字串轉化為實體,可以防止因為PHP_SELF帶來的XSS攻擊
3、Stripslashes():去掉反斜槓
4、Addslashes():新增反斜槓
5、數字型別判斷型別:is_numeric()
二、使用pdo預定義處理
提供給預處理語句的引數不需要用引號括起來,驅動程式會自動處理。如果應用程式只使用預處理語句,可以確保不會發生SQL 注入。(然而,如果查詢的其他部分是由未轉義的輸入來構建的,則仍存在 SQL 注入的風險)。
sql);
id));
備註:
magic_quotes_gpc 函式判斷