sql注入pythonpoco_Dapper和SQL注入

Dapper如何幫助防止SQL注入?

這使得完全參數化數據訪問變得非常非常容易,無需連接輸入。特別是,因為你並不需要通過大量的“20參數添加參數,設置參數類型,檢查空,因為ADO.NET有蘇茨基空處理 ,沖洗/重複”地跳,通過使參數處理愣神方便。它還使得將行轉換為對像變得非常簡單,避免了使用DataTable的誘惑...每個人都獲勝。

來自評論:還有一個......那個小巧玲瓏實際上有什麼幫助呢?

回答一下,讓我們以marc_s的回復為例,並以舊的方式編寫,假設我們必須從頭開始就是connection 。這是:List dogs = new List();

using(var cmd = connection.CreateCommand()) {

cmd.CommandText = "select Age = @Age, Id = @Id";

cmd.Parameters.AddWithValue("Age", DBNull.Value);

cmd.Parameters.AddWithValue("Id", guid);

using(var reader = cmd.ExecuteReader()) {

while(reader.Read()) {

int age = reader.ReadInt32("Age");

int id = reader.ReadInt32("Id");

dogs.Add(new Dog { Age = age, Id = id });

}

while(reader.NextResult()) {}

}

}

除了我過分誇大,因為它還涉及廣泛的問題,如:null處理參數

null處理結果列

使用序數列索引

適應基礎表和類型的結構變化

結果列的數據轉換(在各種基元,字符串,枚舉等之間)

特殊處理哦這麼常見的“在此列表中”場景

對於“執行”,特殊處理“將此單獨應用於輸入列表”

避免愚蠢的錯別字

減少代碼維護

處理多個網格

處理在單個網格中水平返回的多個對象

使用任意ADO.NET提供程序(提示: AddWithValue很少存在) 包括對Oracle等需要額外配置的東西的特定支持

與ADO.NET decoratos很好地配合,例如“mini-profiler”

內置支持緩衝(適用於小到中等數據;最小化命令持續時間)和非bufferesd(適用於大數據;最小化內存使用)訪問

由關心性能的人優化,並且對數據訪問和元編程都非常了解

允許您使用您選擇的POCO / DTO / anon-type /無論參數和輸出如何

當輸出不保證生成POCO / DTO時,允許使用dynamic (對於多列)或基元等(對於單列)

避免複雜的完全類型的ORM(如EF)的開銷

避免像DataTable這樣的弱類型層的開銷

根據需要打開和關閉連接

以及其他一系列常見問題

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值