Posted on 2009-11-01 11:28
kangaroo 閱讀(536)
評(píng)論(1) 編輯 收藏 所屬分類:
tech/ibatis
iBatis是一個(gè)中層的框架,它比jdbc的層次高一些(可以說(shuō),iBatis就是以XML的形式描述的jdbc代碼,它擁有許多jdbc所沒(méi)有的架構(gòu)級(jí)的優(yōu)點(diǎn)),但是對(duì)于對(duì)象/關(guān)系映射工具,層次又要低一些。
1. 釋放數(shù)據(jù)庫(kù)資源
使用jdbc時(shí),很容易犯的錯(cuò)誤就是獲取資源之后忘記正確地釋放它們。雖然垃圾收集進(jìn)程最終可以釋放掉這些資源,但是這種做法非常耗時(shí),并且無(wú)法得到保證。如果對(duì)象沒(méi)有別真正釋放,那應(yīng)用程序最終將會(huì)因?yàn)楹谋M了資源而崩潰。iBATIS框架能幫助管理這些資源,從而減輕應(yīng)用程序?qū)﹂_(kāi)發(fā)人員們的負(fù)擔(dān)
2. SQL注入
如果某個(gè)應(yīng)用程序使用字符串拼接的方式來(lái)創(chuàng)建SQL語(yǔ)句,但是沒(méi)有正確地對(duì)參數(shù)進(jìn)行轉(zhuǎn)義,那么惡意的用戶就可以通過(guò)傳遞一些特殊的參數(shù)來(lái)改變查詢?cè)镜囊鈭D。
例如:select * from product where id = 5.
如果5是用戶傳遞過(guò)來(lái)的參數(shù),拼接到 id = 之后的。那么用戶就可以輸入"5 or 1 = 1",從而改變了整個(gè)SQL語(yǔ)句的意圖。如果用戶更壞一些,輸入"5;delete from orders",結(jié)果就是你的訂單表被清空了。
由于ibatis使用了preparedStatement,而PreparedStatement是不會(huì)受到此類攻擊影響的,所以使用ibatis可以使得你對(duì)應(yīng)用程序的保護(hù)變得更加容易。
3. 降低復(fù)雜度