sql注入是比較常見的網路攻擊方式之一,這種錯誤往往是程式設計師程式設計時的疏忽造成的.
比如現實業務中使用者想查詢產品**為10,type為"成品"的產品(type分為:成品,半成品,檢修)正確sql如下:
select * from production as a where a.type='成品' and a.price=10;
接下來操作頁面上有兩個條件搜尋框,分別為**和產品型別
,使用者輸入**10,產品型別框輸入的不是 成品這個條件 而是''or 1=1 - -
這時候就會引發sql注入.這個時候的sql是這樣的
select * from production as a where a.type='' or 1=1 --and a.price=10;
type='' or 1=1 這個條件永遠成立 而加上 -- 意味著注釋.所以這時會把所有資料查詢出來.從而導致查詢錯誤.
解決方法:
1.引數化sql
這是我們比較常用的,就是在需要填值得地方使用parameter來給值,用?或#來表示引數.
在使用這種方式的情況下,資料庫伺服器不會將引數的內容視為sql指令的一部分來處理,而是在資料庫完成sql指令編譯後再拼接上引數,這時就算含有錯誤引數,由於已經編譯完成,就不會被資料庫所執行.
2.正規表示式
我們也可以在**前後端使用正規表示式來過濾引數,將包含有單引號,分號,和注釋符號等等的語句給替換掉
防止SQL注入
1.什麼是sql注入 所謂sql注入,就是通過把sql命令插入到web表單遞交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。通過遞交引數構造巧妙的sql語句,從而成功獲取想要的資料。2.sql注入的種類 從具體而言,sql注入可分為五大類,分別是 數字型注入 字元型注入...
防止SQL注入
最近看到很多人的 都被注入js,被iframe之類的。非常多。本人曾接手過乙個比較大的 被人家入侵了,要我收拾殘局。1.首先我會檢查一下伺服器配置,重新配置一次伺服器安全,可以參考 2.其次,用麥咖啡自定義策略,即使 程式有漏洞,別人也很難在檔案上寫入 了。參考自定義策略,有了這個策略,再爛的程式,...
防止Sql注入
防不勝防 可以肯定的說,過濾不是辦法,而且效率很低 過濾的目的主要是提供反饋資訊,必須前後臺都要做 但是,有很多辦法可以繞過 致命的單引號 能做的事情按重要性大致如下 1。資料庫訪問用預定義會話 preparedstatement 從根本上防止sql截斷 2。後台過濾 為輸入的資訊提供反饋資訊,只要...