国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

實戰(zhàn) .Net 數(shù)據(jù)訪問層 - 19

2024-07-10 13:03:19
字體:
來源:轉載
供稿:網(wǎng)友
6. aspect

aop(aspect oriented programming)可能是最近幾年被挖掘出

來的最具震撼力的技術之一,作者并不打算在此花什么篇幅介紹它(網(wǎng)上資料已多如牛毛),只是希望借用其aspect概念來說明幾個設計data access layer時必須考慮的問題(也是在進行系統(tǒng)架構設計前不得不考慮的幾個重要因素!):

(1) security

把它排在aspect首位相信大家沒什么疑義吧!



雖然,business logic已為我們搞定了太多的security issues,但那個長久揮之不去的“connectionstring陰影”還是會成為不少開發(fā)人員心中永遠的“不爽”!



有位同事告訴我,微軟曾有一個號稱8萬人難以攻破的asp.net應用程序,它的connectionstring居然就是存在了registry中(別忘了禁用remote registry服務)!這樣的雙重保護(另一重是對connectionstring進行加密處理)是多么簡單卻實用啊!

在很多時候,as simple as possible才是我們應該真正追求的目標。



另一個需要注意的問題就是如何應對sql injection(sql注入)攻擊!

一個經(jīng)典的例子如下所示:

string strsql = "select * from user where" +

" username = '" + strusername +

"' and password = '" + strpassword;



在這里,采用dynamic sql本身并無調用上的邏輯問題,但卻給了cracker以可乘之機:如果系統(tǒng)沒有針對strpassword做過任何數(shù)據(jù)校驗,當用戶試著輸入“abc”作為username,“123’ or 1 = 1”作為password時,那就不得不遺憾的告訴您:該系統(tǒng)已被成功攻破,請迅速發(fā)布新的補丁程序!

雖然這個例子很簡單,但已提醒我們:小小的sql語句也會成為系統(tǒng)漏洞的“重要來源”!



在這種情況下,避免產(chǎn)生危機的方法也很簡單:使用stored procedure或者parameter collection(你不會告訴我準備把這個責任推給毫無sql經(jīng)驗的business logic人員吧j)。如果系統(tǒng)架構時沒有準備采用stored procedure或者開發(fā)人員很不習慣使用parameter collection(坦率地講,我也不喜歡這個東東),那也有個稍微麻煩點的solution(當然不推薦采用):

i. 僅使用username拼裝dynamic sql;

ii. 判斷返回紀錄數(shù)是否為1(假定username為unique column);

iii. 如果記錄數(shù)為1,取出password數(shù)據(jù);

iv. 判斷用戶輸入之password是否與查詢返回之password匹配。



限于篇幅,這里只討論了兩個比較常見的問題,當然是遠遠不能覆蓋security的全部精髓,只是為了表明一個觀點:security實在是非常非常重要,切勿等閑視之!



(2) transaction

這是個避無可避的東東,要發(fā)現(xiàn)它的問題有一定難度,且不易于測試!作者不準備就此展開,大家只有通過實戰(zhàn)積累經(jīng)驗了。

另外,到底是用system.enterpriseservices還是connection.begintransaction + try-catch,依然會使很多.net開發(fā)人員產(chǎn)生困惑,作為系統(tǒng)架構設計的一部分,這也是個必須充分考慮的問題!



(3) logging

日志不是個要不要的問題,而是怎么做的問題。

log4net已經(jīng)很不錯了,不會還想親自動手做一個吧!



(4) exception

這是個“無底洞”,看你怎么設計了。

就作者經(jīng)歷的項目,主要采用這么兩種方式:

i. one throw,one catch,no re-throw

這個最簡單了,不需要太復雜的exception inheritance hierarchy,處理起來也比較輕松;

ii. one throw,multi-catch,multi-re-throw

復雜應用可能采用這種模式更多些,需要一大堆的exception classes和令人望眼欲穿的try-catch,但可能在擴展性和容錯處理方面會表現(xiàn)得更為出色(可苦了咱們開發(fā)人員l)!



暫時就想到這些,如有什么遺漏,歡迎大家補充。



下一段:http://www.csdn.net/develop/read_article.asp?id=27564
  • 網(wǎng)站運營seo文章大全
  • 提供全面的站長運營經(jīng)驗及seo技術!
  • 發(fā)表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發(fā)表
    主站蜘蛛池模板: 静安区| 望谟县| 抚顺市| 林西县| 句容市| 武陟县| 开化县| 内江市| 喀什市| 定陶县| 富平县| 博野县| 崇明县| 云龙县| 通海县| 彭山县| 荥阳市| 民丰县| 浠水县| 北宁市| 贵港市| 肃南| 衡东县| 武乡县| 来宾市| 夏河县| 旬阳县| 板桥市| 昌都县| 湟中县| 新乡市| 永平县| 平武县| 郎溪县| 清水河县| 满城县| 满洲里市| 湘潭市| 福安市| 盐源县| 西乡县|