2021/03/23

DataSnap 開發前篇 - 架構選擇

HTTP persistent connection.svg
helix84 - own work, based on [1], 公有領域, 連結

 


開發多層應用程式時,第一關就是面對【多次連線】和【持續連線】的選擇,雖然網路一面倒向多次連線才是王道,但實際真的適合自己嗎?

What is Encryption in Delphi? (2)


DataSnap Server 有提供 PC1 加密過濾器,一開始什麼都用官方預設值,運作下沒有問題,但就是 Key 值都是固定,就來修改一下吧。

同步修改後運作也是正常,正常的測完後,就要來試試【如果伺服端和客戶端密碼不同時會跳出什麼錯誤】。

結果



居然仍能運作!



這就怪了,為什麼兩邊的 KEY 值不同卻能運作無誤?

在經過測試後,它會經過幾個單元:

  • DBXTransport
  • DBXEncryption

DBXEncryption.TPC1Cypher 類別裡有 Cypher / Decypher 加解密函式,就進行測試,才知道每對封包加密傳遞給對方時,KEY 也會在包在其中一同傳給對方,對方再使用該 KEY 進行封包解密,反之亦然。

簡單的說就是:用 KEY 搭配【相同】演算法解密該封包才能夠正確解密。

 

所以要知道正確的演算法才是關鍵,雖然只要是 Delphi 的應用程式就必定可以解開,但以 Delphi 這麼小眾的情形下也算得上一種良好的加密法則。(笑)

See also

2021/03/05

SQL SERVER 儲存 BLOB 檔案 BCP, CLR, OLE 功能差異


這一陣子遇到需要將 BLOB 欄位轉成實體檔案的需求,主要應用在發送電子郵件上,不查還好,一查也是水很深的技術問題。

 

前提:必須開啟 SQL SERVER 存取實體磁碟的權限

SQL SERVER 存取實體磁碟工作大多屬底層控制,而 DML 操作是在 Instance 下處理,並不會直接對實體磁碟控制,之前 SQL Injection 等資訊安全事件頻傳,為了安全性,SQL SERVER 對實體磁碟的控制選項預設值是關閉的,所以如果必須對實體磁碟控制,就必須先將其開啟。

文章目錄

2021/03/02

DataSnap Clinet 建立過濾器後連線出現 "Connection Closed Gracefully" 錯誤

本文為【ebook【Delphi跨平台資料庫程式設計火速上手】電子書出版 (CHT)】的補充教材。

DataSnap 伺服器端可以設定的過濾器(Filter)有:

  • PC1 加密過濾器
  • RSA 加密過濾器
  • ZLIB 壓縮過濾器

伺服器端設定後,客戶端也需要進行相同設定,否則便無法使用。僅設定單一過濾器時,此時客戶端可以正確連線。