delphi編寫網路程式的安全措施
delphi的midas控制項為編寫網路程式提供了十分方便的手段。利用這些控制項,可以編寫區域網上的客戶機/伺服器體系程式,也能方便地在internet上建立分散處理的應用。
網路程式的乙個重要問題是安全性考慮。一些敏感資料在網上傳送,很有可能被人非法攔截以造成不必要的損失。在實際的程式設計過程中,我採取了一些有效的防範措施,在此作些簡單的介紹。
一、 原理
目前進行資料加密的方法很多,對資料的保護起到一定的作用。但如果採用固定的金鑰或是金鑰隨資料一起傳送,則均不能達到令人滿意的保密效果。在實踐過程中,我摸索出了一套「請求-應答」模式的隨機金鑰方法,對密碼和資料的保密效果都令人十分滿意。
當客戶端程式啟動並企圖與伺服器程式建立連線時,客戶程式從伺服器端取得乙個由伺服器程式產生的隨機字串,系統將以此字串為金鑰來傳送使用者登入密碼和資料。由於金鑰由伺服器程式隨機產生,客戶每次登入時金鑰均不相同,因此大大減少了密碼被攔截導致資料被竊的可能性。
伺服器端可以在遠端資料模組中引出乙個自定義介面,該介面返回乙個隨機字串。遠端資料模組要記錄該字串作為後續處理的金鑰。隨機字串的產生法可以多種多樣,最簡單的方法是用random()函式產生乙個隨機數後再由此數用format()函式或inttostr()產生乙個字串。
二、 使用者登入措施
為了防止程式被非法除錯從而洩露密碼,必須將客戶的登入資訊在伺服器端處理,也可以專門增加乙個安全層負責客戶的登入。客戶的登入資訊儲存在客戶資料表中,包括使用者名稱、密碼、許可權等資訊。
客戶程式登入時,先呼叫伺服器程式的介面獲得金鑰字串,並用此金鑰對使用者輸入的使用者名稱和密碼進行加密並向伺服器傳送登入資訊。加密演算法可以是des演算法或其它有效演算法。伺服器接到登入資訊後,先用先前產生並記錄的隨機金鑰對登入資訊進行解密,再將解密後的資訊與儲存的客戶資料表中的資訊進行對照,從而判斷客戶資訊是否合法以及該客戶享有的資料許可權等。
該過程的客戶端程式如下:
strkey:=myremotesever.getkey();
username:=ency(strusername
strkey);
password:=ency(strpassword
strkey);
if myremoteserver.login(username
password) then
begin
end;
伺服器端的登入過程login()如下:
strusername:=deency(username
strkey);
strpassword:=deency(password
strkey);
if (pass) then
result:=true
else
result:=false;
要注意的是,在伺服器程式和客戶程式中,strkey均應定義為全程變數。
為了防止客戶資料表被程式外開啟從而洩露密碼,可以對客戶資料進行一定的加密措施,例如paradox表可以新增password,伺服器程式在訪問客戶資料表時先提供該password。
三、 資料傳送
在網路程式中,一些敏感資料在網上傳送時必須加密。delphi的midas機制提供了資料加密的途徑,可以在資料傳往客戶端之前對一些字段進行加密,也可以在接收到客戶端的更新資料請求後對來自客戶端的資料的相應字段進行解密後才向資料庫進行更新。為了達到些目的,可以在伺服器程式的遠端資料模組中加入乙個tprovider或是tdatasetprovider物件,並將此物件的dataset屬性置為要處理的資料集。在tprovider的ongetdata事件中加入如下**:
with dataset do
begin
while not eof do
begin
edit;
sensitivedata.asstring :=
ency(sensitivedata.asstring
strkey);
post;
next;
end;
end;
以上**可以將敏感資料加密後再送往客戶程式。
同樣,在tprovider的onupdatedata事件中加入一些處理**便可對客戶端送來的資料進行解密。
以上只是介紹了網路程式安全措施實現的一般原理,在此基礎上,可以增加其它保密措施,以達到更好的保密效果。例如,客戶程式可以用特定的輔助硬體裝置來增加安全性。在智慧卡應用程式中,客戶程式在登入時不僅要求使用者輸入使用者名稱和密碼,程式同時檢查ic讀寫器中ic卡的型別及特定的內容,這樣,既使密碼洩露了不會被人冒名登入。當然,任何安全措施都不是絕對安全的,安全措施還要有嚴格的保密制度及使用人員的高度的保密意識才能真正起到保密作用。
編寫網路程式
為什麼需要htons ntohl ntohs htons 函式 2009 12 11 13 15 51 分類 在c c 寫網路程式的時候,往往會遇到位元組的網路順序和主機順序的問題。這是就可能用到htons ntohl ntohs htons 這4個函式。網路位元組順序與本地位元組順序之間的轉換函式...
用Delphi編寫安裝程式 1
用delphi編寫安裝程式 1 當你完成乙個應用軟體的開發後,那麼你還需要為該軟體做乙個規範化的安裝程式,這是程式設計的最後一步,同時也是很重要的一步,因為執行安裝程式往往是使用者做的第一步操作。很多報刊文章介紹了許多如何利用installshield等工具軟體來製作安裝程式的方法,這種辦法可以很快...
利用Delphi編寫Socket通訊程式
一 delphi與socket 計算機網路是由一系列網路通訊協議組成的,其中的核心協議是傳輸層的tcp ip和udp協議。tcp是面向連線的,通訊雙方保持一條通路,好比目前的 線,使用telnet登陸bbs,用的就是tcp協議 udp是無連線的,通訊雙方都不保持對方的狀態,瀏覽器訪問internet...