2012-06-13 54 views
2

我們正在使用數據集作爲我們的數據訪問層。 目前有一些存儲加密數據的列。強類型數據集:覆蓋列get:set

使用CLR我能夠創建一個SQL函數來解密select中的數據,但在討論中我們已經確定這是一個安全風險。

什麼,我希望做的是要麼

  1. 覆蓋了get/set數據表列的,這樣當上得到它會未加密值 並返回一個可讀的字符串,並在設置將加密數據。
  2. 或者對錶格適配器進行一些操作,以便在選擇/更新時可以像上面那樣做。
+0

是有可能的,我可以處理的填充或上得到這樣的方式在擴展表適配器?類似於http://forums.asp.net/t/1152173.aspx/1 – workabyte

回答

2

您可以嘗試創建此任務的擴展方法:

namespace ExtensionMethods 
{ 
    public static class MyExtensions 
    { 
     public static void SetEncryptColumn(this DataSetType.DataTableRow row, string value) 
     { 
      row.Encrypt = EncryptValue(value); 
     } 

     public static string GetEncryptColumn(this DataSetType.DataTableRow row) 
     { 
      return DecryptValue(row.Encrypt); 
     } 
    } 
} 

http://msdn.microsoft.com/en-us/library/bb383977%28v=vs.90%29.aspx

+0

已經考慮到了這一點,真的在跳轉會有一種方法來獲得類似於{返回DecryptValue(值)} – workabyte

+0

我確實已經有了字符串的擴展方法,所以我可以說table.value.encrypt/decrypt()並獲得回報。我試圖做的事情的本質是將解密放在表格適配器上填充或從數據庫獲取數據。感謝回覆! – workabyte

0

鍵入的DataTables是部分類。雖然您無法覆蓋屬性,但您可以在另一個文件中添加更多方法,這些文件將在set上加密並在get上解密,並將值存儲在原始屬性中。

+0

您可以提供的任何參考材料或示例? – workabyte

+0

已鍵入的數據集是部分類,但在生成的強類型行定義中看不到'partial'關鍵字。 – Artemix

+0

在Visual Studio 2012 pro .net 4.5數據集中,我確實看到類似於 的公共部分類xyzRow:global :: System.Data.DataRow { – gg89