題:
由於用戶在用戶名字段中輸入錯誤,密碼以明文形式發送
Lex
2013-03-05 22:09:55 UTC
view on stackexchange narkive permalink

查看了由不同SIEM(Splunk,HP Logger試用版和AlienVault平台的SIEM)生成的日誌後,我注意到,由於某些原因,很多用戶會在用戶名字段(在OS域登錄,或在Web應用程序中。我猜想是那些不看鍵盤就無法打字的人,並且試圖這樣做,快速地完成操作,最終在錯誤的字段中輸入了密碼。這意味著該密碼將以純文本形式發送到網絡中的所有位置,並最終在日誌中記錄一個事件,該事件表明以下內容:

 用戶P @ $$ w0rd不存在[...]  

 帳戶無法登錄:P @ $$ w0rd [...]  

(其中P @ $$ w0rd是實際用戶的密碼)

找出密碼屬於誰變得很明顯:通常是上一個或下一個(不成功)事件同一日誌文件將告訴您一個由同一用戶觸發的事件。

任何其他分析師,只要查看日誌,都可以獲得他人的憑據,而到期所有者甚至不知道該憑據;最壞的情況是網絡竊聽或實際的日誌文件洩露。

我正在尋找一般指導以幫助防止這種情況。我認為簡單地屏蔽用戶名是不可行的,即使這樣做,這也可能會消除很多日誌分析,因為它們無法告訴誰做了什麼。

注意: b >已經有一個類似問題的帖子,但我正在設法解決它。如果我不小心在用戶名字段(Windows登錄)中輸入密碼,會有什麼風險?

接受的答案: b>我希望我可以從列表中選擇一些答案。不幸的是,我只能在論壇中堅持一個,但實際上,我可以將它們結合在一起。非常感謝您的所有回答;我看到沒有單一的解決方案。因為我同意添加“事物”會增加複雜性,從而增加安全漏洞的可能性,所以我必須同意大多數選民的意見,即@AJHenderson作為第一種方法具有最優雅,最簡單的答案。絕對在服務器上甚至在客戶端進行SSL和簡單的代碼驗證。當我尋求緩解的不是惡意用戶,而是分散注意力的用戶時,這樣做會很好。一旦到位,如果合適的話,我們可以開始考慮將實施擴展到不良用戶。再次非常感謝大家的投入。

散列用戶名和密碼並發送。當然,必須在HTTPS上創建帳戶。無需進一步登錄。
@SparKot ॐ-問題在於,如果您對用戶名進行哈希處理而沒有常見的錯誤,則很難識別用戶。使用用戶名的常用鹽,就可以對日誌進行彩虹表攻擊,以查找任何輸入錯誤的密碼。
Rainbow表是暹羅分析師,帶有應用程序日誌,其他人計數超過5000+ eps聽起來非常不便。有一些類似Q1的siem解決方案會警告定義為檢查用戶名類型的正則表達式。
@Lex我很困惑有人以這種方式從網絡中竊取密碼的風險是什麼?它意味著多少威脅?如果我有東西,那它就超過了網上所有的安全性。
如果用戶名存在於數據庫中,則僅記錄日誌?
-1
@Lex,但這將是另一種風險,因為這些風險全部以明文形式保存在計算機上,我指的是被竊聽的風險。在這種情況下,攻擊者必須非常幸運。根據系統的響應(如果要求一次令牌/密碼)或以某種方式進行預身份驗證,則實際受到損害的機會要少得多。
@asadz我同意你的100%
@CodesInChaos是一個有趣的想法,我確信可以為此實現正則表達式過濾器。
我們這些不看鍵盤就能打字的人也可能犯該錯誤。通常,我們實際上也不需要看屏幕,如果稍微分散注意力,這種錯誤很容易犯。這是Windows XP Home Edition和更高版本界面的優點,它是用戶可以從中選擇的菜單。當然,只有少數用戶沒有用。
過去,這種情況一直在我身上發生,原因如下:通常,當我解鎖計算機時,它會記住我是最後一個用戶,只需要輸入密碼即可。在恢復顯示器電源之前,我經常使用[ctrl]-[alt]-[del]並輸入密碼。但是,如果我最後一次登錄是通過遠程桌面,則用戶名將被清除。在這種情況下,按照我的常規例行程序將密碼輸入為用戶名。
在密碼輸入框以外的其他地方輸入密碼可能是導緻密碼更改的主要原因。我應該更經常犯該錯誤!
我有兩台機器和一個鍵盤。使用無邊界鼠標有時,只要我想將光標聚焦,我有時都會輸入密碼。並非總是需要登錄的框
我突然覺得需要更改各種密碼...而且,當我過去這樣做時,通常發生的事情是我輸入的速度非常快,而無意間錯過了移至下一個字段的“ tab”鍵。換句話說...帳戶無法登錄:MikeSP @ $$ W0RD
我注意到一個非常煩人的錯誤,在該錯誤中,我將在網頁中切換到密碼字段,並在頁面加載完成之前開始輸入內容,然後,當頁面完成操作(輸入密碼的過程中)時,它將使焦點從密碼字段並返回默認值(通常是用戶名字段)。我希望每個人都可以確保他們的產品/網站不這樣做。
如果可能,您是否可以添加一個新字段,例如重新輸入密碼並添加客戶端驗證?
@Lex“ ...出於某些原因...”只是推測原因:頁面加載後,頁面上是否存在將焦點放在用戶名框中的javascript?我的銀行網站執行了此操作,由於增加了負載,我發現自己在用戶名字段中輸入了密碼。 (例如,我輸入我的用戶名並在輸入時(或在輸入前)輸入我的密碼,頁面將完全加載,將焦點設置為用戶名,而密碼將進入用戶名字段)。
@Sufyan-是的,這也是有效的,但會在可用性方面受到打擊,因為這需要用戶方面的額外工作,這通常會使它的接收效果不佳。並不是說在某些情況下這不是正確的選擇,但它不是受歡迎的選擇。
->用戶P @ $$ w0rd不會“退出”,這顯然是一個錯字。
[很抱歉,如果有人已經發表了此評論]這種事情現在發生的次數很多,因為很多人使用諸如KeePass之類的東西來自動鍵入其憑據。將焦點放在錯誤的字段上很容易,然後將自動鍵入的名稱,選項卡,密碼和輸入序列填充到錯誤的字段中。
恐怕@ray023無法告訴您。但是,這也會發生在人們也在Windows登錄上犯錯誤的情況下。
最近,當用戶在URL本身(查詢參數)中而不是在HTTP標頭中放置“ Authorization Basic ”時,我遇到了類似的事情……對不起他,但他的請求進入了“ NCSA-logs”文件,我們不能簡單地阻止記錄日誌,因為我們在記錄日誌消息之前不會對其進行解析。
十七 答案:
AJ Henderson
2013-03-05 23:33:26 UTC
view on stackexchange narkive permalink

一個想法是,如果密碼框中沒有值,則不允許表單提交。通常,如果他們不小心在用戶名中輸入了密碼,則密碼對話框中可能不會有任何內容。

值得注意的是,這不必簡單地在客戶端完成,但是只要使用的傳輸是安全的,並且直到通過了關於密碼字段不為空的檢查之後,輸入才被記錄下來,也可以在服務器上完成該操作。

簡單而優雅。希望我能給它+5。
確實。如果我們嘗試將其與@CodesInChaos建議的一些基本級別過濾器結合使用。 +1
繞過的javascript控件會通過存在風險的導線發送用戶名。它將被類似於wirehark的東西所選擇,如果它的ssl仍然是,例如sslstrip http://www.thoughtcrime.org/software/sslstrip/
太糟糕了,我們不能說服MS為Windows登錄對話框實現此功能。
@asadz-是的,這並不是要防止攻擊者做某事,但問題是,可以採取什麼措施來防止用戶犯錯而使密碼最終落入日誌文件。
如果沒有現代瀏覽器中的JavaScript控件,是否可以保證? HTML5之前是否有任何類型的表單必填元素(http://john.foliot.ca/required-inputs/)
-1
-1
@ruakh:很好,但這不是答案,它表示阻止表單提交,而不是阻止日誌記錄,這在其他幾個答案中也有建議。
@EricG:是的,我同意。評論的主要目的是幫助改善答案,所以我提出了一些我認為可以幫助您解決該問題的建議。
因此,@AnuragKalia僅在存在密碼策略的情況下才啟用它。
@AJ亨德森的流行貢獻:)。
同意-在客戶端贏得快速便捷的勝利。
有沒有人有具體的方法來做到這一點,還是我們僅依賴JavaScript?如果是這樣,我們是否應該更詳細地擴展這個答案?
@EricG-我已經更新了答案,以反映這也可以在服務器端完成。雖然Form是HTML發布的關鍵詞,但它絕不是我的答案的預期含義。想法很簡單,除非密碼字段具有值,否則您不處理登錄嘗試。這可能在服務器或客戶端上。
@Iszi您可以*通過懸賞獲得* 5。
@AJHenderson:我假設您的Web服務器日誌或網絡流量日誌可能包含密碼。您可以在形成任何應用程序級別日誌之前停止處理。您將需要在Web /網絡日誌記錄中使用過濾器。
@EricG-如果您要記錄每個論壇提交的帖子數據,則將進行大量記錄。我想您仍然必須謹慎設置,但是我認為只要不實際嘗試身份驗證,就可以解決該問題。當然,它可能不適用於所有系統。
漂亮的解決方案,感謝您的建議!所有登錄對話框都應實現此目的。我將從在我的一個應用程序中實現它開始。
fixulate
2013-03-05 22:13:39 UTC
view on stackexchange narkive permalink

假設您的後端應用程序和SIEM需要查看對各種應用程序的失敗登錄嘗試(並因此顯示“ User P @ $$ w0rd is invalid”錯誤消息),那麼停止它就不會變得很簡單。 / p>

但是,確保所有發送包括用戶名和密碼在內的敏感數據的應用程序都實施HTTPS(使用SSL加密的HTTP)是確保網絡設備和網絡上的任何人都不會獲取錯誤密碼的好方法輸入用戶名框中!

確實。可以解決我一半的問題/疑慮。 +1。非常感謝。
我猜ssl是一種解決方法,而不是代碼修復。問題最好只能從根本上解決。
@asadz:應用程序在錯誤輸入時顯示用戶名的事實不是應用程序錯誤,它是預期的功能,不需要修復imo。
@devcity2012一種預期的功能,但可能沒有想到。在軟件工程中有需求分析的一部分;這是最好在序列圖中顯示這些東西的地方;為什麼在提交之前不檢查表格?輸入驗證無效?
如果表單使用用戶名和密碼,並且兩者都存在,則後端配置為顯示用戶名,如果用戶在用戶名文本字段中錯誤地輸入了密碼,則這不是應用程序錯誤。
我僅在某種意義上說這是一個問題,即僅基於用戶名字段提交請求?
是的,那可以停止了。 :)
goodguys_activate
2013-03-05 23:43:00 UTC
view on stackexchange narkive permalink

問題是您不希望分析人員在敏感日誌文件中看到密碼嗎?

警告::即使您使用Javascript也不會處理以純文本格式存儲在磁盤上的密碼數據。

一個更好的解決方案是在分析人員看到日誌之前先對其進行預處理,然後再編輯日誌中的信息。

如果您將行列入白名單或將其他名單列入黑名單,則可以進行逐行過濾線。例如:

您可以將用戶名列入日誌文件中的白名單

  • 具有模式([az] +數字)或([az] +句號+ [az])
  • 在AD環境中包含一個域名,後跟一個斜杠“ \”
  • 出現多次
  • 可以在分析人員看到之前,先針對已知用戶名的LDAP目錄進行清洗

您還可以通過以下方式識別和將密碼列入黑名單:

  • 密碼策略通常遵循一種模式(一個符號,一個上/下,x個字符...)

您可以使用此知識來構建自定義日誌數據清除程序,以保護您所不知道的信息不想讓分析師看到。

那麼過濾後的行是什麼樣的?

您可以通過對可疑用戶名進行散列,然後為它們分配一個人類ID並將其存儲在其中來簡單地對其進行編輯一個安全的位置:在頻率上。

您選擇的確切哈希方法(或加密方法)可能會存在風險,因為此“哈希數據庫”將包含高價值信息。而且播種(根據其性質)將阻止頻率分析,這可能對您沒有價值。

+1是一個好主意,始終假定日誌包含敏感信息,除非已明確編輯或除非另外證明。
Nathan Goings
2013-03-06 07:13:02 UTC
view on stackexchange narkive permalink

我只能確定您所討論的三個問題。

  1. 用戶輸入的信息不正確。
  2. 分析人員可以從日誌中識別密碼。
  3. 密碼以明文形式發送,很容易被中間人 strike>竊聽。
  4. ol>

    我認為這是

    1. 接受用戶錯誤,勉強地
    2. 不要記錄無效的用戶名,而是記錄失敗的嘗試和IP。
    3. 不要以明文形式發送用戶名。使用HTTPS 之類的技術或使用javascript對純文本進行編碼(例如ROT13)。
    4. ol>

      登錄失敗並成功重試的示例日誌。

        [00:00:00]帳戶無法從192.168.1.100登錄[00:21:00]從192.168.1.100成功登錄“ root”  

      請閱讀其他答案,我想將其包括在內。

  • 在提交前驗證所有字段。
  • 請考慮將多個頁面之間的表單分解為Eric提到了G。
我不確定“用javascript自己滾動”到底是什麼意思,但是我很確定這是個壞主意。
-1永遠不要在JavaScript中滾動自己的https。如果這不是您的意思,請澄清。
我澄清了@makerofthings7。我從沒在JavaScript中說過滾動https,而是說過javascript(已加密加密)。儘管不是最容易正確實現的方法,但是有一些資源可用於這種解決方案。這是一個有效的答案,我不明白為什麼它值得一個負數。
從服務器傳送帶有加密代碼的Javascript(這似乎是您描述的)很少是一個好主意。服務器可以修改該JS代碼並公開本地私鑰。另一個向量是XSS / CSRF。這是一個冒險的安全設計。 HTTPS應該是最低要求。讓我知道您是否正在考慮其他部署,例如包裝在PhoneGap中的HTML / SPA應用程序或類似的應用程序。
-1
Eric G
2013-03-06 01:49:18 UTC
view on stackexchange narkive permalink

我看到一些銀行(至少在Web應用程序中)實現的解決方案是進行兩頁登錄。

  1. 在第一頁上僅接受用戶名
  2. 在流程的下一頁上,要求輸入密碼,並且僅回顯用戶名,因此它不是可編輯字段
  3. ol>

    因此,第二頁上唯一的輸入應該是密碼。由於用戶知道必須使用用戶名清除第一頁,因此他們知道必須清除該門,因此第二頁上的唯一選項是密碼。

    如果您可以實施此工作流程,它將幫助用戶集中精力輸入他們的鍵入內容和輸入時間。


    另外,請考慮您的日誌記錄:也許您可以更改日誌記錄不包括實際憑證?

    例如,成功登錄後,請使用主鍵id而不是回顯輸入:“ id為'2342342'的用戶已嘗試登錄”,然後“ id為'2342342'的用戶已成功提供了密碼”。

    如果您進行查找並且用戶名不存在,則類似“來自IP地址'192.168.0.10'的用戶嘗試使用無效的用戶ID登錄”。

    這將是您的應用級別日誌。 Web服務器日誌可能包含查詢參數,因此可能難以解決,或者您可以在操作之間以及在寫入日誌時根據某些規則編寫某種類型的代理過濾器之間放置某種類型的代理過濾器。這將是特定於平台的,但看起來可能在Apache上可能

    作為輔助控件,請限制對正在處理的各種日誌文件的讀取訪問。 >

串行身份驗證?也許
實際上,兩步表單是我最有可能絆倒並在第一頁的用戶名字段中輸入密碼的地方!
我想對UX案例有更多的了解,您是否有任何理由認為這種情況會發生?網站登錄是否在重複訪問時存儲您的用戶名?我想這會有所幫助(但可能會造成傷害),因為如果它預填了用戶名,您甚至都不需要輸入框。讓我知道更多詳細信息,然後看看是否可以在響應中添加一些其他信息。
感謝我的回答,這使我減少了對我的一家銀行這樣做的沮喪。
Abhijit
2013-03-06 01:23:39 UTC
view on stackexchange narkive permalink

一般而言,所有客戶端代碼都足夠智能,足以處理基本錯誤

  1. 用戶ID和/或密碼丟失
  2. 密碼與準則不匹配
  3. ol>

    因此,無論如何在日誌中仍然看到這些條目時,

     用戶P @ $$ w0rd不會退出[...]帳戶登錄失敗: P @ $$ w0rd [...]  

    沒有任何客戶端驗證有效,系統最終通過網絡發送了未加密的密碼。那麼“密碼”字段中的內容是什麼?絕對不能為空,因為客戶端驗證將失敗。它必須與密碼不同

    所以要進行兩次通過身份驗證

    1. 首次通過,將所有加密的詳細信息(包括密碼)發送到服務器。驗證密碼字段是否為空。
    2. 第一遍,驗證密碼是否與準則不匹配,否則錯誤提示。
    3. 第一遍,接下來檢查數據庫中是否存在密碼。如果沒有出現錯誤,請執行以下操作。
    4. 將RPC響應發送回客戶端,然後讓它立即發送用戶ID和密碼。
    5. 現在執行身份驗證過程
    6. ol >

      此過程的全部實質是

      1. 將風險降至最低。注意,您無法消除不信任客戶端的風險。
      2. 不信任客戶端。
      3. ol>

        最後,由UX專家審核您的界面。可能是您的界面存在缺陷,導致用戶在ID字段中輸入密碼。

很好的建議。我認為到目前為止,這裡的大多數答案都做了一個很好的總結,這很有意義。 +1
Kevin Reid
2013-03-06 10:06:44 UTC
view on stackexchange narkive permalink

從您對體系結構的描述來看,這是不可行的,但我認為正確的解決方案是:不要以明文形式發送用戶名,也不要記錄失敗登錄嘗試的用戶名。用戶名和密碼僅應放在的位置,該位置是檢查密碼的子系統;在此之前,用戶名是未經身份驗證的任意數據-任何有權訪問登錄表單(在Web應用程序中是整個Internet的用戶)都可以鍵入他們想要的任何內容,但是他們經常需要輸入它們-因此告訴你很少的興趣。 (除非您的登錄表單未暴露於Internet。)

這可能會消除很多日誌分析,因為它們無法告訴誰做了什麼....?

給出一個沒有正確密碼的用戶名,您不知道該請求實際上是來自該用戶的,因此您仍然不知道嘗試登錄。

-1
nalply
2013-03-06 17:24:05 UTC
view on stackexchange narkive permalink

一般問題是基於密碼的身份驗證。每個家庭旅館都堅持要求使用密碼進行身份驗證。這很愚蠢。

讓其他一些身份提供者付出艱鉅的工作來確保憑據安全。與StackOverflow一樣:允許使用OpenID,Gmail等進行身份驗證。

您的用戶將感謝您不需要在某個地方輸入另一個密碼。

dr jimbob
2013-03-06 04:29:30 UTC
view on stackexchange narkive permalink

客戶端javascript似乎很合理。

提交前,請檢查密碼字段是否為空。檢查用戶名的格式是否正確。要求用戶名是電子郵件地址的地方尤其優雅。您還可以在密碼設置/更改機制中禁止使用電子郵件地址形式的密碼。然後,在提交表單之前,只需檢查用戶名是否為有效電子郵件地址即可。可以使用特殊字符或數字類似地完成此操作。 (例如,密碼中必須包含數字/特殊字符,但用戶名中禁止使用數字/特殊字符。)

此外,對所有表單提交都使用最新的庫SSL(應這樣做,以防止網絡竊聽者監聽在)。需要提升的權限才能讀取這些日誌(例如,Web服務器帳戶可以寫入這些日誌,但只有root可以讀取它們)。一旦密碼未通過身份驗證步驟,請勿將用戶名傳播到其他系統。 (還可以在不同的內部系統之間使用SSL來防止網絡竊聽。)

Daniel Pryden
2013-03-06 09:53:14 UTC
view on stackexchange narkive permalink

我喜歡我目前的公司所採用的解決此問題的方法:如果在錯誤的框中輸入密碼,自動化系統會導緻密碼立即失效。因此,用戶必須更改密碼,日誌中的密碼現在不再容易受到攻擊。

當然,如果用戶仍在將該密碼用於其他系統,這仍然不是理想的選擇,但希望被迫更改密碼將使用戶更加意識到可能的安全風險。

這是如何運作的?是否對照存儲在數據庫中的“密碼”檢查“用戶名”,如果匹配,則強制重置?是基於Web還是Windows / LDAP級別?如果是這樣,這是風俗還是現成的產品?
@EricG:這是一個自定義系統,我沒有構建它,所以我真的不知道它是如何實現的。也就是說,我相信它可以通過散列用戶名並對照密碼哈希檢查哈希來實現。我的理解是,他們將“可疑情況下找到的密碼”保存在某個數據庫中,並使與此列表匹配的所有活動密碼都過期。
我認為您錯過了他詢問他們如何知道密碼已輸入名稱字段的部分。
@jcolebrand:對不起,我想我解釋了一下:將輸入到用戶名字段中的所有內容都進行哈希處理,並對照密碼數據庫檢查哈希。如果您的密碼數據庫很大,並且想快速檢查,則可以選擇使用Bloom過濾器之類的方法。不過,我不知道這是否是他們的實際工作:也許還有更好的方法。
這實際上可能是一件事。然後的問題是我可以放入1234567或password1等,並使整個Lotta密碼無效。如果我認為我知道我的好友密碼,等等。
我和EricG在一起。我不明白如何以安全的方式實際實施此操作。如果密碼數據庫使用鹽存儲密碼(並使用慢速密碼哈希(例如bcrypt)),則驗證不正確的用戶名是否實際上是某人的密碼並不容易,如果是,請找出密碼的真實性,這是您所能做的最好的事情對數據庫中的所有用戶進行詳盡搜索,這是不可擴展的。如果密碼數據庫不使用salt(或不使用慢速密碼哈希),則您會遇到更嚴重的問題,這絕對是不行。
Izac Mac
2013-03-06 21:18:47 UTC
view on stackexchange narkive permalink

通常,最簡單的答案是正確的答案。現在我們注意到每個電子郵件地址在域名之前都有一個“ @”符號。將“ @”設置為密碼中的NON ACCEPTABLE鍵可以使解決方案變得顯而易見。如果用戶名不包含@,並且所有用戶名均為電子郵件地址,則僅記錄其中至少包含@的電子郵件地址。

現在,如果用戶名DONOT具有“ @”,則可能會使某些用戶生氣,但這是一個很好的解決方案。也就是說,在密碼之前必須有一個單字符。就像所有電子郵件帳戶的用戶名一樣,格式也一樣。無論答案是什麼,所有答案的開頭或結尾都有一個特殊字符。因此,當用戶輸入密碼時,您會讓他知道他需要輸入密碼。

第三個解決方案是顏色編碼。將用戶名字段設置為黃色,將密碼字段設置為紅色。紅色通常會引起您的注意,因為它用於敏感物品。因此,即使他們在看鍵盤,也會非常快速地了解到密碼是紅色的。因此,基本上,文本字段和密碼標籤是紅色的,最好在一個單獨的框中,用戶名標籤和文本字段的顏色均為黃色。

使用電子郵件地址作為用戶名在公共應用程序中並不是很普遍,在內部應用程序中很少見。顏色編碼不太可能會有所幫助:使用錯誤字段的常見原因是不注意哪個字段(特別是當用戶名字段通常被預先填充但由於某種原因不在其中時)。
l--''''''---------''''''''''''
2013-03-06 02:01:05 UTC
view on stackexchange narkive permalink

為什麼不僅僅對此回應?

 該用戶名不存在 
您可能不應該這樣做,甚至在響應中花費不同的時間。這樣的響應有時會浪費處理時間的差異,從而提供了有效的用戶名列表,這些用戶名甚至可以用於嘗試訪問站點/服務本身之外的其他原因(例如,他們可以嘗試向gmail等相同的用戶名發送電子郵件)。
@GaryS.Weaver:<-是的。例如,您在蠻力分析器中創建了A / B測試,並且只要遇到不同的情況,就知道您已經識別了有效的用戶名。
@GaryS.Weaver沒有萬無一失的解決方案,但是您認為這有點過分嗎?他沒有運行americanexpress.com
@Артём-Царионов由您,他和其他所有人來實施他們認為合適的安全措施。
問題中的問題在於用戶名最終出現在日誌文件中,該日誌文件以純文本形式永久記錄了用戶名。如果服務器受到威脅或管理員不誠實,他們可以訪問用戶的帳戶,而無需在系統中進行任何記錄。日誌文件仍然需要知道正在嘗試使用什麼用戶名,因此,如果將密碼放在用戶名字段中,則解決方案將需要以某種方式防止將密碼存儲在日誌中。
-1
A. Wilson
2013-03-06 06:48:39 UTC
view on stackexchange narkive permalink

您對接收服務器的處理有多少控制權?似乎上述用戶提出的同時對用戶名和密碼進行哈希處理的解決方案可以通過以下兩種方法來實現:

方法1(需要JavaScript):對用戶名和密碼進行哈希處理。在數據庫中,存儲散列的用戶名,然後使用該字段進行身份驗證查找。如果您可以控制服務器上數據的處理方式,但不控制其日誌記錄容量,那麼這將是理想的選擇。

方法2(不需要JavaScript):像往常一樣以純文本格式接收用戶名,但在服務器上將其轉換為哈希後,方法1中將其轉換為哈希。如果嘗試失敗,請記錄哈希值,而不要記錄用戶名。日誌將仍然有用(如果仔細檢查,則用處不大),因為每個哈希仍將唯一地標識用戶。這些都不像這裡的最高響應那樣優雅(我也建議您使用它),但是它們更加詳盡。

sharp12345
2013-03-06 08:52:51 UTC
view on stackexchange narkive permalink
  • 僅允許傳輸用戶名和密碼的md5散列(或類似的哈希),因此在日誌文件中記錄的所有內容始終看起來像固定長度的隨機字符,這將使任何人都無法快速猜出它是密碼或用戶名的md5。

Con:要與數據庫中的用戶名進行比較,您必須存儲兩列,例如“用戶名”和“ md5(用戶名)”,否則每次查詢登錄用戶名時都必須動態哈希。


  • 僅當用戶名存在於數據庫中時創建日誌條目,否則僅記錄ip。

  • 僅允許用戶使用鼠標(而不是鍵盤)單擊Enter,或者僅允許在最後兩個字段中的兩個字符最後輸入5秒後使用鍵盤,這將使用戶有時間查看屏幕並查看錯誤。

  • 對允許的用戶名和密碼進行一些限制:

    1. 密碼必須包含特殊字符,例如!@#$%^ & * ()
    2. 用戶名不得包含任何特殊字符
    3. ol>

這種方式,您可以使用javascript來快速識別輸入的用戶名是否為用戶名或密碼。

louis_coetzee
2013-03-06 15:54:52 UTC
view on stackexchange narkive permalink

一個簡單但煩人的解決方案可能是使用html按鈕在屏幕上的鍵盤佈局,其中用戶只能使用這些按鈕鍵入用戶名,這將防止犯錯,我意識到這可能會令人煩惱但實際上,第一次登錄後,您可以使用Cookie記住用戶名,而無需再次使用。當然需要Javascript。現在,不可能意外地以純文本形式發送密碼。希望對您有所幫助。

是的,但是人們從筆記本電腦登錄Windows域又如何呢?我們也收集這些日誌。
Tek Tengu
2013-03-06 17:55:00 UTC
view on stackexchange narkive permalink

我有不同的看法...您要真正解決什麼問題?

  1. 密碼錯誤?即當您看到某人使用“密碼”(或變體)時,是否希望能夠追溯到用戶並進行更正?

  2. 明文發送的密碼?

  3. 還是那些無法鍵入或閱讀表單(或者UI設計不正確)的白痴的問題?

  4. ol>

    始終記住,每當您“添加”到系統時,都可能增加複雜性,並且肯定添加了代碼-兩者都增加了您在整個體系結構中打開安全“漏洞”的可能性(可能在堆棧中,可能是通過網絡,可能是通過網絡...)。因此,在解決這三個問題中的任何一個時,您必須衡量解決這些問題的價值是否值得冒一個您不知道的漏洞的風險-您知道的魔鬼總是比您不知道的魔鬼好。

    每個都有。

    應該在設置和更改密碼時通過驗證規則來解決錯誤的密碼。而且只有那裡。要添加另一個位置,僅意味著您有使驗證規則混亂或不同步的風險。

    以明文形式發送密碼。誰在乎?被授予可能會“感到”不安全,但請記住,這是n部分身份驗證,如果只有1個部分,則與在字典中使用單詞沒有什麼不同。也許,也許只是如果您有一個活動的嗅探器,它可能會為他們提供一些線索,但是已經到位的入侵是您的真正問題,而不是在用戶名字段中出現一些偶然的,隨機的,繁瑣的密碼操作。現在,如果您要發送的所有部件都存在明顯的大問題。

    白痴或不良的UI設計問題。修復用戶或用戶界面。簡單。在UI上提供積極的幫助,讓部門接受一些培訓或其他方面的培訓。易於修復,需要進行有限且低風險的代碼更改(或者應該-儘管要注意UI方面)。

    儘管我很欣賞這裡的許多建議,但其中許多都是以精妙的想法為核心的。我建議使用KISS,而不是BS方式,請始終記住,如果添加到系統中,可能會增加不安全感。

    只需2美分。

rjt
2014-07-31 14:21:09 UTC
view on stackexchange narkive permalink

生物識別技術現在相當便宜,並且至少有80%的時間可用。我發現它在TabletPC上非常有用,並且一直希望部署生物識別鍵盤,因為它速度更快(至少在80%的時間內)。 ,WinXP,Win2003和WinVista,因為默認情況下,用戶名字段已經填充了最後一個成功的用戶名。不能完全確定哪個版本的ActiveDirectory或工作站已更改,但是現在默認使用的用戶名字段為空,這使此問題更加普遍。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...