1、防止sql 注入攻擊
一、sql注入簡介
sql注入是比較常見的網路攻擊方式之一,它不是利用作業系統的bug來實現攻擊,而是針對程式設計師程式設計時的疏忽,通過sql語句,實現無帳號登入,甚至篡改資料庫。
二、sql注入攻擊的總體思路
1.尋找到sql注入的位置
2.判斷伺服器型別和後台資料庫型別
3.針對不通的伺服器和資料庫特點進行sql注入攻擊
三、sql注入攻擊例項
如在乙個登入介面
如果後台sql 是這樣的
string sql = "select * from user_table where username=' "+username+" 』 and password=' "+password+" '";
使用 使用者名稱: 『or 1 = 1 – 密 碼:
登入就會出現這種情況:
select * from user_table where username=『』or 1 = 1 -- and password=' "+password+" '"
就可實現免賬號登入
應對方法
1.(簡單又有效的方法)preparedstatement (一般的增刪改) ☆☆☆
採用預編譯語句集,它內建了處理sql注入的能力,只要使用它的set***方法傳值即可。
使用好處:
(1).**的可讀性和可維護性.
(2).preparedstatement盡最大可能提高效能.
(3).最重要的一點是極大地提高了安全性.
原理:
sql注入只對sql語句的準備(編譯)過程有破壞作用
而preparedstatement已經準備好了,執行階段只是把輸入串作為資料處理,
而不再對sql語句進行解析,準備,因此也就避免了sql注入問題.
2.傳入引數字元過濾(重要)☆
☆☆☆☆
一旦傳入引數帶有特殊字元 比如 『 、 or 、
--等字元,就可能帶有攻擊性, 如果你的sql語句是由 string 拼接而成,一旦sql編譯成功,帶有攻擊性的sql語句 符合資料庫編寫規則 ,則可能造成很大的危害
這方面還有很多的方法,比如js過濾,正規表示式過濾
所以如果你的sql語句是拼接而成 ,首先就要把 可能帶有攻擊性的引數 過濾掉特殊字元
3*用過濾器來過濾一些sql注入的特殊字元
(struts 框架)
具體**如下
web.xml 的配置 過濾所有請求
user
com.celsp.interceptor.myfilter
過濾器** 實現
filter
介面 繼承 }
@override
public void dofilter(servletrequest request, servletresponse response,
filterchain chain) throws ioexception, servletexception
@override
public void destroy()
super(request);
}//複寫的是getparametermap方法 這樣才會對stuuts2 起到獲取作用
//getparameter()不可以
@override
public mapgetparametermap()
}return map;}}
}總結
總的說來,防範一般的sql注入只要在**規範上下點功夫就可以了。
凡涉及到執行的sql中有變數時,用jdbc(或者其他資料持久層)提供的如:preparedstatement就可以 ,切記不要用拼接字串的方法就可以了。
2、改動不可編輯的頁面 ☆☆☆
問題
有些字段我們不允許使用者改動,但又必須讓使用者可以檢視,我們往往會通過js的 disable (禁用屬性)或者 readonly (唯讀屬性)來實現功能,
這些屬性不懂程式的人是改不了,但是稍微懂一點前端的人就可以通過f12頁面除錯改動,比如去掉這些禁用屬性,然後就可以改動內容了,還可以跟form表單一起提交,從而改動資料庫
應對方法
如果我們需要實現這種業務,又不出現這種可能改動的情況也很簡單,
我們可以設定兩個資訊,乙個是給使用者看的,另外定義乙個變數儲存在js裡面,提交的話我們只提交js裡隱藏的那個資訊,這樣的話使用者不管怎麼改動他可以看到的那個資訊但是最後儲存的還是最初我們從資料庫查詢出來的資訊
提高程式可讀性
在程式設計過程中注意提高程式的可讀性是良好的程式設計習慣,這使程式更易於理解,也更容易在以後進行修改和更正。同時也有助於我們理清自己的程式設計思路。為了避免步入 的wading,可讀性是必要的。不僅追求效率,也追求優雅,也即 乾淨利落的抽象 crisp abstraction 出自grady 物件導...
提高IIS的安全性
概要 使用iis的省缺設定就象把你屋子的鑰匙給了別人,本文教你如何把門鎖上。本文不是100 直譯,括號中的是討飯貓的廢話 沒有任何系統是100 安全的,系統漏洞會不斷地發現,這是因為黑客和系統管理員一樣也在整天看著新聞組,收集著這方面的資訊。黑與反黑之間的戰鬥會永遠進行下去。如果你採用iis的省缺設...
提高MD5安全性
username password tom123456 注意 永遠不要使用這種方式 驗證流程 1.提交使用者名稱密碼 2.計算密碼雜湊值 3.比對儲存的雜湊值和計算出的雜湊值是否相等 使用雜湊演算法 可以是md5,sha1,sha256,sha512 結果長度依次增長 123456sha 512ba...