2009-07-16 30 views
0

我有一個使用登錄屏幕(標準用戶名/密碼)的Delphi(5)應用程序,最近才發現密碼存儲應用程序可以識別屏幕中的登錄字段,即使它們被混淆,並提供爲用戶保存信息。由於我們計劃的高度安全性,我們不想允許這樣做。到目前爲止,我還沒有找到任何有關如何阻止這些應用程序檢測字段或告訴他們不要嘗試的信息。這些選擇中的任何一個都可能?如果不是,還有其他選擇嗎?可能阻止表單填充?

回答

4

以下是一些想法 - 你知道填充物是如何工作的嗎?

1)您是否可以在運行時動態創建用戶名/密碼框?用半隨機組件名稱?在登錄表單的創建中創建幾個組件並不困難。 2)你能用一個按鍵狀態機替換標準的編輯控件嗎,有效地使用(例如)TLabels'僞造'輸入嗎?

3)從剪輯控件中剪切/複製/粘貼?

4)覆蓋您的表單的默認消息處理程序,併吞下任何未從您的應用程序「來」的按鍵事件?

+0

標籤建議做到了。該應用程序現在不會被視爲具有登錄屏幕。由於我已經有了一個鍵盤處理程序(想要從ctrl-Fkey組合中保留),因此在處理按鍵命中時很簡單。 – 2009-07-16 21:30:29

+0

很酷,很高興它有幫助。 :-) – robsoft 2009-07-17 08:08:31

+0

最有可能形成具有maskedit屬性的填充捕獲字段。所以'假'標籤方法就行。 您也可以添加驗證碼字段。另外一個領域可能會令人討厭,但爲了安全起見,這是一枝帶刺的玫瑰。 (密碼技術也是另外一個字段:) – user114285 2009-07-17 10:29:40

0

要求您的用戶不使用表單填充可能?不知道可以對用戶的計算機施加什麼樣的控制。

或者,也許找到一種方法來檢測瀏覽器上是否安裝了插件(如Roboform),並且放置了一個警告框?

+0

這不是一個瀏覽器應用程序,它是一個獨立的Win32可執行文件。雖然我可能沒有在上面說清楚,對不起。 – 2009-07-16 17:44:39

0

我不認爲有辦法區分設備驅動程序內部生成的鍵盤事件和使用keybd_event函數從另一個程序生成的鍵盤事件。

如果表單填充只是使用複製&粘貼,那麼它很簡單 - 只需阻止WM_PASTE消息。

5

用戶總能找到一種方法來對自己的系統進行控制。您可以輕鬆地阻止自動錶單填寫工作,因爲您可以防止用戶將便箋後貼到其監視器上。

處理這樣一個事實,只要您相信用戶維護安全,您就必須處理用戶的弱點。您可以通過限制個人用戶的能力來減輕這種影響,但從長遠來看,您所能做的只是希望用戶充分關心自己的個人信息以確保其正確性。另一方面,如果此應用程序僅在辦公室使用,爲什麼用戶在安全的環境中使用密碼管理應用程序?

1

您可以採取Web應用程序所使用的方法,以確保自動化實用程序無法輕鬆寫入來填寫表單。這涉及顯示其中包含一些文本的圖像,用戶必須先輸入才能繼續。可以在屏幕上閱讀「文本」的自動化實用程序無法輕鬆讀取屏幕上的「圖形」(至少不是沒有進行一些廣泛的OCR編程)。這些程序中的大多數還會扭曲文本,導致簡單的OCR傳遞失敗。

這很容易做到,只需創建幾十個左右的圖片,您可以隨意選擇一個數字,當應用第一次啓動時(不要忘記種子隨機數發生器)和然後選擇一個圖像供用戶鍵入。當對圖像進行匹配時,不要進行文字比較,而應與圖像中的單詞的CRC或諸如此類的東西進行比較。

爲了更好地保護用戶密碼,您還可以要求他們更頻繁地更改密碼。如果安全性要求很高,則需要使用必須根據預設標準更改的強密碼。例如,需要混合大小寫,至少一個數字值,至少一個符號和至少8個字符。密碼不能在標準字典中(拼寫檢查失敗),或者在最近n次使用過。密碼在20天后過期。

我也會確保你實際上不會在數據庫中存儲密碼。而是存儲密碼的哈希值。唯一一個應該知道用戶當前密碼的人是輸入密碼的人。