由 helix84 - own work, based on [1], 公有領域, 連結
開發多層應用程式時,第一關就是面對【多次連線】和【持續連線】的選擇,雖然網路一面倒向多次連線才是王道,但實際真的適合自己嗎?
DataSnap Server 有提供 PC1 加密過濾器,一開始什麼都用官方預設值,運作下沒有問題,但就是 Key 值都是固定,就來修改一下吧。
同步修改後運作也是正常,正常的測完後,就要來試試【如果伺服端和客戶端密碼不同時會跳出什麼錯誤】。
結果
居然仍能運作!
這就怪了,為什麼兩邊的 KEY 值不同卻能運作無誤?
在經過測試後,它會經過幾個單元:
DBXEncryption.TPC1Cypher 類別裡有 Cypher / Decypher 加解密函式,就進行測試,才知道每對封包加密傳遞給對方時,KEY 也會在包在其中一同傳給對方,對方再使用該 KEY 進行封包解密,反之亦然。
簡單的說就是:用 KEY 搭配【相同】演算法解密該封包才能夠正確解密。
所以要知道正確的演算法才是關鍵,雖然只要是 Delphi 的應用程式就必定可以解開,但以 Delphi 這麼小眾的情形下也算得上一種良好的加密法則。(笑)
這一陣子遇到需要將 BLOB 欄位轉成實體檔案的需求,主要應用在發送電子郵件上,不查還好,一查也是水很深的技術問題。
SQL SERVER 存取實體磁碟工作大多屬底層控制,而 DML 操作是在 Instance 下處理,並不會直接對實體磁碟控制,之前 SQL Injection 等資訊安全事件頻傳,為了安全性,SQL SERVER 對實體磁碟的控制選項預設值是關閉的,所以如果必須對實體磁碟控制,就必須先將其開啟。
DataSnap 伺服器端可以設定的過濾器(Filter)有:
伺服器端設定後,客戶端也需要進行相同設定,否則便無法使用。僅設定單一過濾器時,此時客戶端可以正確連線。