日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

.net多层结构 sql注入

發(fā)布時間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .net多层结构 sql注入 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1,功能單一型
解釋:比如一個軟件是由
界面部分 User Interface+ 代碼邏輯 Business Logic Layer+ 數(shù)據(jù)庫部分 Data Access Layer
組成。
但是為什么一個常見的軟件要搞得這么復(fù)雜?為什么不能把以上三種融為一體。這樣不就避免了
【中間件】的學(xué)習(xí)成本了?
但是界面有winform html 這種標(biāo)準(zhǔn)極致的,和用戶交互的;代碼邏輯有許多編程語言來實現(xiàn)對數(shù)據(jù)完整性的約束;
數(shù)據(jù)庫可以連接界面與數(shù)據(jù)。
而這些東西都在特定的方面做到極致,都有專注自己擅長的領(lǐng)域。它們組合起來就得到了完美的軟件。即功能單一性。

大型企業(yè)組織結(jié)構(gòu)的管理模式的優(yōu)點:容錯率高,可替換性強,上限高。
缺點:不靈活,效率低,速度慢。小型企業(yè)反之。

它借鑒企業(yè)組織結(jié)構(gòu)的管理模式,實現(xiàn)的一種多人團(tuán)隊協(xié)作開發(fā)模式。

而多層結(jié)構(gòu)與軟件的組成結(jié)構(gòu)有很多相似點。每個部分做好每個部分的事情,相互聯(lián)系,一個地方出錯,可以精確定位到
bug的地方,里面很多偽方法,各司其責(zé),互不干擾,實現(xiàn)功能。

一個解決方案里添加了多個項目,而每個項目就做各自的事情,每個項目互相引用通過偽方法各自傳值,進(jìn)行數(shù)據(jù)的交流。

比如登錄
1,界面 UI 2,判斷賬號密碼 BLL 3,匹配數(shù)據(jù)庫里的賬號密碼 DAL
UI界面需要用窗體,獲得值就行了,再傳給BLL層。
BLL層進(jìn)行非空判斷,再通過偽方法給 DAL層
DAL層進(jìn)行匹配,得到返回數(shù)據(jù),給UI層。

引用UI引用BLL,BLL引用DAL,DAL再引用ado.net 的類庫。

```csharp //下面是sql注入的一種,這種sql寫法是有問題的,可以破解登錄。 select count(*) from admin where id = '' and pwd = ' ' or '1' = '1 'public class DBHelper1{public static object GetData(string sql,SqlParameter[] paras){string address = "Data Source = .; Initial Catalog = MySchool; Integrated Security = True";using (SqlConnection con = new SqlConnection(address)){SqlCommand cmd = new SqlCommand(sql,con);con.Open();//參數(shù)化技術(shù),取代字符串拼接cmd.Parameters.AddRange(paras);return cmd.ExecuteScalar();}}}private void button2_Click(object sender, EventArgs e){string sql = "select * from admin where loginid = @id and loginpwd = @pwd";SqlParameter[] paras = new SqlParameter[] {new SqlParameter("@id",textBox1.Text),new SqlParameter ("@pwd",textBox2.Text)};int i = Convert.ToInt32(DBHelper1.GetData(sql, paras));if (i > 0)MessageBox.Show("驗證成功,不會遭到sql注入!");} //缺點是不能看到 參數(shù) 要再數(shù)據(jù)庫 sql server profiler看

其它層,幫助層,暫時叫實體層。ENTITY
對其它三層起輔助作用的層。
比如設(shè)計一個方法,如果參數(shù)很多,就很復(fù)雜,但是把這些參數(shù),放到一個類,把這個類放入實體層。
這時參數(shù)就是一個object 的類了,返回值可以是泛型集合。
這樣,提高了代碼的復(fù)用率了。

寫在最后:

用多層結(jié)構(gòu)開發(fā)軟件的詳細(xì)步驟
1,對數(shù)據(jù)表進(jìn)行需求分析,各種業(yè)務(wù),想象功能點
2,搭建基本多層結(jié)構(gòu),正確的讓其相互應(yīng)用
3,針對你的需求分析,設(shè)計偽方法
4,實現(xiàn)偽方法和功能

通用的規(guī)范標(biāo)準(zhǔn)是十分重要的。
1,一個數(shù)據(jù)表必須在實體層中存在一個實體類用于對其它層作輔助,傳值的載體
2,這個類中有按要求的屬性,字段,構(gòu)造
3,每個層的命名規(guī)范 表名-DAL 表名-BLL
4,一個類必須至少5個方法 Get() Get(string id) Update() Add() Delete()
其它的方法靈活變通。

總結(jié)

以上是生活随笔為你收集整理的.net多层结构 sql注入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。