題:
哈希/鹽醃密碼有什麼真正的價值?
Steve
2015-10-28 16:33:08 UTC
view on stackexchange narkive permalink

我照顧的是一個擁有大量“低等級”信息的系統,除了名稱/地址/電子郵件等之外,什麼都沒有。有人建議我們從當前的內部密碼加密算法提高安全性,以使用ICO建議的哈希/鹽。我做了一些閱讀,仍在努力尋找好處,我的觀點已經回到“專家”身上,他們提出了這個建議,但是他們不會(無法)回答我相當簡單的問題。

我缺少什麼?

評論不作進一步討論;此對話已[移至聊天](http://chat.stackexchange.com/rooms/30971/discussion-on-question-by-steve-is-there-any-real-value-in-hashing-salting-密碼)。
問題是受保護的,因此要評論...請記住,數據庫訪問與擁有憑據不同。讀取數據庫意味著您只要擁有訪問權限(例如現金)就可以獲取和使用數據。 DB寫意味著您可以進行操作,但也只能在此問題得到解決之前進行操作。然後,事實上,除非您鎖定並強迫所有用戶使用身份驗證來更新憑據,否則入侵者仍然可以使用舊憑據,並且可能未被發現,並可能導致其他人(例如信用卡)受到指責。
這必須是這裡另一個問題的重複。
十二 答案:
Matthew
2015-10-28 16:40:44 UTC
view on stackexchange narkive permalink

用戶經常在多個站點上使用相同的密碼。您的網站可能沒有任何財務數據,但是如果他們的銀行或在線商店使用相同的密碼怎麼辦?

您可能會說這不是您的問題,但這很普遍問題,這就是為什麼每當發生違規時,立即聲明之一就是“更改密碼,並在您使用相同密碼的任何其他網站上更改密碼”。

如果您的網站使用了某些內容像Bcrypt(實施中沒有缺陷-請參見Ashley Madison)一樣,攻擊者能夠確定所使用的密碼的機會更小,並且增加了用戶在其他地方更改密碼的時間。如果您只是將密碼存儲在數據庫中而沒有任何哈希,則攻擊者可能會徘徊於電子郵件地址和密碼並立即開始攻擊另一個站點。

電子郵件地址和密碼對也經常在攻擊者之間進行交易,形式為“組合列表”,這意味著即使原始攻擊者只對您的網站感興趣,他們也可以通過將數據出售給其他人而獲得一些利益。

為回應有關提到2路加密存儲的問題的評論而添加的內容。

2路加密方法的問題是要解密的信息必須存儲在系統中的某個位置。如果攻擊者獲得了對您數據庫的訪問權限,則很有可能他們也有權訪問您的加密密鑰。哈希不能以這種方式反轉-用於反轉哈希的在線工具可以有效地在預先計算的列表中查找哈希。

即使他們沒有加密密鑰,他們也可能確定密鑰是什麼-他們可以通過輸入系統密碼並查看結果來使用已知的明文攻擊。這可能不是一個快速的過程,但是如果您的數據中有任何高價值目標(名人,政客...),那可能是值得的。

另一方面,使用強而有規律的散列,唯一有力地找到原始密碼的方法是使用適當的散列來散列所有可能的輸入。使用Bcrypt之類的工具需要花費數年時間,儘管仍然可以相對較快地找到弱密碼。

好的,這是一個公平的結論,該網站是用經典的ASP編寫的,因此我必須找到一個組件來執行此操作,這應該不太難,但是我必須以某種方式強制為所有用戶更改密碼...我無法更改密碼,因為無法將密碼發送給他們(或者可以通過代碼完成嗎?),即生成密碼並通過電子郵件發送密碼?然後在登錄時強制更改密碼...還有什麼!
這將是可能的,並且似乎是最佳解決方案。我能想到的唯一另一件事是必須刪除密碼提醒,而改用密碼重置...我需要考慮的任何其他陷阱嗎?
@Steve很多事情都值得考慮,但是其中大多數都包含在OWASP身份驗證秘籍中https://www.owasp.org/index.php/Authentication_Cheat_Sheet-非常值得閱讀
另外-您的員工很可能可以使用解密密鑰...,那麼該如何阻止他們解密整個密碼數據庫並在離開公司後在線發布呢?如前所述,人們會重複使用密碼,因此可能會造成一些損害
-1
@AndrewPhilips將引入如何處置舊的“可解密”數據庫的問題,而留下的任何副本將使整個更改無用。重設密碼是這裡的方法。
@gnp,沒有任何問題,只需在記錄新密碼時刪除/清空包含舊密碼數據的即可。史蒂夫的第一句話是他必須強制更改密碼。他應該知道不強制進行更改在技術上是可行的。因此,在這種情況下,他們有兩個問題:(1)政策問題(是否強制更改密碼?)和(2)技術問題(是否所有用戶都必須更改密碼?)。儘管像您一樣,我傾向於變更政策,但有時這可能會對用戶社區產生不利影響。在這種情況下,選擇是一件很不錯的事情。
Mark Buffalo
2015-10-28 17:55:03 UTC
view on stackexchange narkive permalink

很好的問題,很高興您提出了。我希望人們在Google上找到該線程,以便他們-不會犯許多其他公司所犯的錯誤。

您不應該只是 hash 密碼,則應 salt ,並確保您的哈希算法使用某種形式的 SlowEquals 。您不應該止步於此:您應該使用一種安全的散列算法,該算法可以大大地抵抗衝突 ,例如bcrypt或scrypt。


為什麼鹽?什麼是衝突?

我將以md5為例,因為它是眾所周知的。 請勿使用它,因為它很容易發生碰撞,而且速度很快,這意味著它更容易折斷。假設您只是在不加鹽的情況下哈希密碼。您幾乎每次都會產生一個靜態輸出。

例如,將“ myDarnPassword ”散列為md5時,最終將轉換為“ aca6716b8b6e7f0afa47e283053e08d9 ”。此時,您可以發起字典攻擊並使用Rainbow表。您甚至可以生成一個數據庫,該數據庫將盡可能多的隨機字符轉換成易於搜索的數據庫,而無需費時的彩虹表查找。您可以隨著時間的流逝慢慢地創建它,以後再查找哈希。

您將創建一個如下表:

  + --------- ---------- + ---------------------------------- + |密碼| UNSALTED_HASH | + ------------------- + --------------------------- ------- + | myDarnPassword | aca6716b8b6e7f0afa47e283053e08d9 | + ------------------- + --------------------------- ------- + | pleaseDontSueMe11 | 0dd395d0ec612905bed27020fb29f8d3 | + ------------------- + --------------------------- ------- +  

然後,您將像這樣從數據庫中進行選擇:

  SELECT [password] FROM [table] WHERE [ unsalted_hash] ='aca6716b8b6e7f0afa47e283053e08d9' 

它將返回 myDarnPassword plus 發生的任何衝突。

有了足夠的處理能力和時間,您就可以創建數万億個組合,並且很容易在很短的時間內破解大量密碼(由於數量龐大,我建議將數據庫拆分成多個密碼長度) )。但是,您將需要大量的硬盤空間。

在那一點上,您真正要做的就是查找它,而不會每次都在蠻力地浪費一切的處理能力。而且,如果您過去曾從數據庫中竊取過他人的密碼,則可以添加這些密碼,並將其轉換為哈希值。許多網站已經做到了這一點。

當網站驗證您的密碼時,他們會將密碼與存儲的哈希進行比較,如果該密碼與數據庫中的哈希匹配,則被視為有效密碼。然後,您可以允許用戶登錄。

對哈希值進行設置可以幫助抵禦此攻擊,但無法避免衝突。您可以將被入侵的哈希與生成衝突的哈希列表進行比較,然後在網站上輸入該密碼,即使您輸入的密碼錯誤:只要哈希驗證有效,您就可以被偽裝。


誰在乎有人破解我的密碼?我不在乎!

下面僅是一小部分示例,這些示例說明了仿冒者和其他惡意人員可以使用您未加密且未加鹽的純文本密碼。它不一定可以直接用於定位您,但是假設 Hacker 想要定位 Person A 。讓我們來推斷一下如何定位人員A

  1. 您是 Hacker 。您的工作是黑客入侵網站並開發數據庫以匯總此信息。
  2. 人員A 是一個有興趣的人。 Person A 出現在您的一個被黑客入侵的網站數據庫中。現在,您知道他們的電子郵件地址,以及他們用於該網站的密碼
  3. 現在,您可以嘗試使用從該網站竊取的密碼登錄其電子郵件地址。親愛的,它起作用了!
  4. 現在您可以訪問他們的電子郵件,您可以通過 IMAP 或通過他們的Web郵件下載他們的所有電子郵件。此時,您會發現很多有趣的東西。他們正在與人員B 通信。
  5. 您實際上可以 google 一些人的用戶名和電子郵件地址,它可以顯示他們發布的網站。這將打開用戶使用的其他網站。也許您可以嘗試入侵這些網站,或者您可以推斷出它們的內容。現在,您可以假裝像他們,或查找其他信息。信息/活動可以包括:
    • 用戶名人員A 在網上發佈為 Mark Buffalo 。那是一個相對獨特的名字。然後,您可以搜索Mark Buffalo,並查找他發布的網站。也許他在其他網站上展現了更多個性?
    • 密碼。也許 Mark Buffalo 在該網站上具有相同的密碼。也許您可以登錄該網站並查看他與他人的私人交流?
    • 個人信息。由於您知道 Mark Buffalo 的身份,如果他在某些網站上共享個人信息該怎麼辦?如果他在craigslist上發布以尋找男性或女性護送,並將他的電話號碼留在那裡,該怎麼辦?您已經找到了他的電話信息,因此可以找到一種方法來設置他並勒索他,以獲取金錢/信息/權力。除非您不包括電話號碼,否則這與給密碼加鹽沒有太大關係,但是由於您的洩漏,他們在另一個網站上找到了他們的電話號碼。這是可以針對您收集和使用信息的許多非常強大的方法之一。畢竟,這是一個 Information Security 論壇,因此我想使用此示例。
    • 家庭信息。現在越來越令人毛骨悚然。我們有馬克·布法羅的個人信息。讓我們看看他的社交網絡。哦,他有一個 Facebook 帳戶(我沒有)。我們可以使用相同的密碼訪問嗎?如果Buffalo使用的是相同的密碼/電子郵件組合,則可能是這樣。您可能可以從您之前訪問的他的電子郵件中推斷出這一點,在那裡您發現了很多有趣的東西。現在,我們可以登錄並閱讀他的Facebook消息。現在我們知道他的家人是誰。然後,我們可以更輕鬆地協調勒索攻擊。
    • 其他登錄信息。由於我們可以更早地訪問他的電子郵件,因此我們看到他也有一個Skype帳戶。其中之一是秘密。我們登錄後,看到他和Skype上的人調情。現在,我們有更多勒索材料。
    • 假冒。您現在可以在各種網站上登錄並模擬Buffalo。也許他實際上是個準射手,從來沒有去過任何護送或類似的活動?好了,現在您可以通過使用他的憑據在網絡上模擬他,至少在外觀上將他變成尋求護送的重犯。想像一下,可能會對被錯誤指控並被迫辭職的政客造成的損害。
    • 使黑客更容易被黑客入侵的事物。然後,您可以將帶有感染附件的電子郵件發送給人員B ,並假裝自己認識他。您已經閱讀了足夠多的電子郵件,因此可以模仿 Mark Buffalo 到看上去就像他一樣。您以一種使 Person B 毫無疑問的方式製作電子郵件的方式,現在您可以對 Person B 做同樣的事情,或更糟的是。
  6. ol>

    而這只是一小部分想法。別人的憑證有很多不同的用途。對您的密碼進行加鹽和哈希處理,使用抗衝突的哈希算法(例如bcrypt和scrypt)以及 prevent SQL注入攻擊。請不要把我變成尋求護送的褻瀆!保存Mark Buffalo!

    (我知道有些網站可能會在您使用其他IP時阻止您訪問其服務的嘗試,但是有很多解決方法,並非所有網站都這樣做) 。

    順便說一句,祝賀您被黑客入侵後可能會提起集體訴訟。

謝謝你的故事,我明白了。儘管他們隨後如何對我提起集體訴訟有點棘手,但如果用戶到處都使用相同的密碼,那麼它可能會針對任何人
@Steve好吧,他們可以證明您並沒有盡一切可能保護提供給您的密碼數據-違規數據通常鏈接到源。如果發生了多個違規事件,但是您的系統是僅有的具有純文本密碼的系統,那麼它將看起來不太好。規則因國家/地區而異,但通常要求您證明您已採取行業標準的預防措施,即使這些措施對於特定的應用而言似乎過分適用。
有數據線索。您可以隨處丟棄的小麵包屑。如果曾經發現過“黑客”,他們很可能會查明他的惡意行為的根源,無論其他系統是否使用了未加密和未加密的密碼,該惡意行為都可能導致您的惡意行為。
-1
如果他可以訪問您的電子郵件,他只能重置您的所有密碼。只需盲目前往貝寶和銀行網站,要求重設密碼。這就是為什麼必須真正主動使用電子郵件帳戶的原因,它們很關鍵,您應該在電子郵件上使用非常好的密碼+ 2種方式進行身份驗證
AiliyetwgmCMT表示同意。
只是也要把這個放在這裡:https://xkcd.com/792/
+1特別是最後一句話。許多國家/地區都有適用於提供用戶帳戶的任何服務的隱私法。即使您認為您的數據庫沒有任何敏感信息,使用行業標準的哈希/鹽操作也僅會減少您被黑客入侵時的潛在責任-這表明您正在採取合理的措施來避免遭受最弱的攻擊鏈接到多部分黑客操作中。
@Steve“儘管他們隨後如何對我提起集體訴訟還是有一點微不足道的。”這被稱為“過失”。在法律上,這意味著“未能合理使用護理,從而導致他人受到傷害或傷害”。這是提起訴訟的理由。只需問問索尼,阿什利·麥迪遜,家得寶,塔吉特...
我想補充一下@Freedo,:有些人會不時從其他電子郵件帳戶發送電子郵件給自己,因此如果這些密碼使用的不是同一電子郵件帳戶,則您可能無法重置這些密碼。可能需要一些光偵探工作。我只是想展示一下目前我能想到的很多示例中的錯誤情況。
我認為您可以在答案中使用[彩虹表](https://en.wikipedia.org/wiki/Rainbow_table)一詞。我不認為傳統的SQL數據庫可用於此任務。 ;)
當然。如果您想在線存儲所有結果供其他人檢查,則將使用傳統的SQL數據庫。 :)您看過那些網站嗎?
我忘記了某些安全人員的頭腦多麼狹narrow。有些網站已經存在了很多年,僅僅是因為沒有得到支持,並不意味著所有者就會受到訴訟(根據我的猜測,我猜想我們的董事會中會有很多美國人,猜猜起訴文化在這裡更普遍)。如果您閱讀了此處寫的一些內容,那麼除非他們有足夠的資源來解決每個潛在的安全問題,否則任何人都不應建立網站...商業是要平衡無法消除的風險完全地
如果您決定不保護人們的信息,那麼您實際上就是在開槍。 = /
-1
老實說,除非您提出這些指控,否則我看不出這是怎麼解決的。我認為這是一個很好的問題,確實需要回答。也許您誤會了我們?
@MarkHulkalo,我認為人們一遍又一遍地以各種形式看到相同的問題已經感到厭倦,有人認為他們如此聰明,可以按自己的方式去做,公然無視所有行業最佳實踐。
要清楚。我理解並同意所有所說的話,並且正在努力整理有預算對此問題進行糾正的網站。我的意思確實是某些網站沒有任何預算和/或網站過舊,並且數據並不真正有價值。然後的問題是刪除站點並停止業務,或者接受部分解決方案...這不是我的電話。我真正要指出的是,這是一個真正的決定,只是對我大喊大叫並不意味著承認現實。我看到評論說這是一個小時的工作……相信我,這不是在使用Classic ASP時!
Selenog
2015-10-28 17:32:33 UTC
view on stackexchange narkive permalink

常見的違規類型是對用戶表的只讀訪問。這是因為此表用於執行不需要身份驗證的登錄的代碼。獲得密碼將允許對所有數據進行讀訪問。但是,即使攻擊者已經對數據庫具有完全讀訪問權限,他仍然可以通過密碼獲得寫訪問權限,能夠登錄帳戶並輕鬆更改某些數據。

甚至不總是違規-在舊式* nix系統(未實現“影子密碼”的系統)中,每個登錄(非特權)用戶都具有這種訪問權限。
user90546
2015-10-29 15:33:51 UTC
view on stackexchange narkive permalink

添加和散列用戶密碼的一個非常簡單的原因是:

用戶密碼是他/她的秘密

沒有人應該知道。不是您,不是您的同事,也不是DBA。 沒人。就這麼簡單...

在您看來...在某些情況下,您需要“成為客戶”,但是由於這是一個安全站點,所以我希望對操作邏輯的評價不高!
如果您具有對(正確設計的)系統的管理訪問權限,則可以在不知道其密碼的情況下“成為客戶端”。我從來沒有要求別人提供密碼來測試他們的帳戶可以做什麼。我只是使用`sudo`(或它的等效物)。
@Steve您知道所有這些大型服務如何總是告訴您永遠不要將密碼告訴任何人,即使它們聽起來像來自$ SERVICE支持?
@Steve:只是向您的站點添加了一些功能,以$ USER用戶可以看到的方式向您顯示該站點,僅對管理員用戶可用。無需使用實際登錄名。
Thor Erik
2015-10-28 16:40:29 UTC
view on stackexchange narkive permalink

麻煩的一部分是使分析和竊取密碼以及在其他站點上使用其用戶名/電子郵件和密碼組合變得更加困難。

用戶在以下位置重複使用1或2個密碼是相當普遍的多個站點。強烈建議您將算法更改為繁瑣的算法,並花費更多時間(例如bcrypt,scrypt等),並且在大多數語言中都非常容易實現。

SEM
2015-10-29 15:44:59 UTC
view on stackexchange narkive permalink

鹽的目的有兩個:首先,它為每個密碼引入一個獨特的(-ish)元素,因此,如果兩個用戶碰巧使用相同的密碼,則密碼的哈希文本將有所不同。如果用戶A看到她的密碼哈希為“ QWERTYU123”,並且用戶B的密碼哈希也為“ QUERTYU123”,則用戶A可以推斷出她具有與用戶B相同的密碼。

第二,它對於希望通過字典攻擊對密碼進行暴力破解的任何訪問數據庫的人,都會帶來巨大的提速。無需添加鹽,攻擊者可以簡單地對“ TRUSTNO1”進行哈希處理以獲得哈希值“ QUERTYU123”,然後掃描密碼列以查看該文本是否出現。攻擊者必須加鹽,才能為數據庫中的每一行重新散列“ TRUSTNO1”,以測試是否匹配,從而大大增加了檢查每個字典條目所需的CPU數量。

Nick Gammon
2015-10-31 10:00:44 UTC
view on stackexchange narkive permalink

如果他們有權訪問數據庫,那麼他們實際上不需要密碼,因為他們可以直接從數據庫中竊取數據

密碼是很有價值的東西。那是因為很多人重複使用相同的密碼。因此,您鴿舍俱樂部的密碼可能與網上銀行使用的密碼相同。地址/電子郵件等。

這些也很有價值。我忘記了最近從“ eBay”或“ Apple”收到的聲稱我的帳戶受到限制的電子郵件數量,除非我“驗證”我的詳細信息。通常他們顯然是假的,因為他們沒有提到我的真實姓名。但是,如果您存儲名稱和電子郵件地址,則發出逼真的郵件會很容易,要求提供更多的個人信息。例如:

尊敬的哥譚市車站街42號的史密斯先生。

我們剛剛意識到我們俱樂部在本財政年度向您收取了超額費用,並希望向您退還10美元。請回复您的銀行詳細信息,以便我們將資金存入您的帳戶。

因此,請勿忽略電子郵件和姓名。


底部但是,我們的結論是,對現有數據庫進行哈希處理和添加鹽分大約只需一個小時的編碼和測試。然後,您可以將純文本密碼“批量轉換”為散列和加鹽的密碼。

RVD
2015-10-28 19:59:45 UTC
view on stackexchange narkive permalink

加密用戶信息(例如姓名,電子郵件等)並存儲在數據庫中,而不是以原始格式存儲,為您的應用程序提供了更高級別的安全性。其次,有權訪問您的數據庫的人也無法輕鬆讀取數據。您存儲的,來自任何客戶的任何信息都是保密的。由於這些數據是他們的數據,因此開發人員有責任以某種方式存儲數據,從而使黑客難以理解其含義是低級信息還是最高機密信息。另外,解密和加密數據應該在服務器端進行,因為通常服務器都位於防火牆後面。因此從安全角度來看,它變得更加安全。

codykochmann
2015-10-29 01:50:03 UTC
view on stackexchange narkive permalink

如果攻擊者也能夠訪問數據庫,我可以理解您的意思。不過,設計良好的安全系統只會讓數據庫存儲用戶和服務器已分別加密的信息。

通常,密碼是隱藏值的第一道密碼,您可以讓用戶提供該密碼的哈希值,可以對哈希值進行哈希處理以解密其數據,從而在數據庫的加密密鑰曾經存在時提供第二層安全性妥協。這樣,即使發生數據洩露,用戶的數據仍然是安全的。

anomaly
2015-10-29 23:59:19 UTC
view on stackexchange narkive permalink

在這種情況下,散列的要點是基於單向函數或陷門函數的思想:一種易於計算但難以逆轉的函數。用戶生成密碼時,系統將計算其哈希並將該值存儲在數據庫中。當用戶提交密碼以進入系統時,它將計算其哈希並將其與數據庫中的值進行比較。如果它們相同,那就太好了;如果不是,則密碼是錯誤的,應防止用戶訪問系統。為了使這項工作有效,散列需要兩個屬性:(1)將不同的原始值散列為不同的值; (2)從散列值到原始值在計算上很困難。

那麼,為什麼還要打亂散列呢?如果有人入侵您的數據庫(不僅僅是通過計算機黑客,而是通過社會工程學攻擊,在總線上留下打印輸出,不滿員工的行為等),他們得到的僅僅是一系列哈希值。很難從哈希值中恢復原始值,因此這對黑客不是很有用。如果明文密碼存儲在數據庫中,則如果數據庫受到威脅,黑客將獲勝;否則,黑客將獲勝。他可以直接訪問所有帳戶和密碼,並且基本上可以執行他想做的任何事情。此設置還意味著無法訪問用戶的密碼。這是一件好事;即使您信任自己,您大概也不會信任-也不應該信任-銀行的對等人,工作的前任或繼任人等。您不必依賴大手筆。或管理員的心血來潮,以確保您的信息安全。

關於鹽,我在上面提到過,哈希必須具有兩個非平凡的屬性才能有效。 (我現在跳過了一些其他功能。)具有這些屬性的功能很難找到,而依靠站點的特定管理員來提出一個體面的功能是不明智的。取而代之的是,大多數人都使用廣泛可用的哈希。鹽的重點是確保不同的站點有效地使用不同的哈希值:我們不只是對'password'進行哈希處理,而是針對各種'salt'值使用'salt'+'password'。這意味著,如果某人在兩個站點上使用相同的密碼,則他們在兩個系統上實際上具有不同的哈希值,因此黑客無法使用一個來破解另一個。而且,如果沒有鹽,黑客就可以蠻力地將所有哈希值強加給合理長度的密碼。我在上面提到,哈希值必須很難逆轉。如果您有一個表,其中包含所有可能的密碼散列,例如最多10個字母(甚至只是最常用的密碼),則反轉散列很簡單;只需在桌子上查找即可。

Karl Bielefeldt
2015-10-30 23:13:35 UTC
view on stackexchange narkive permalink

除了其他答案外,請記住,在完全安全和完全訪問數據庫之間還存在許多漏洞。一個漏洞可能隻公開某些密碼,或者僅公開其前幾個字符,或者很難與特定用戶關聯等。散列和加鹽可以使較小的漏洞變成主要的漏洞。

此外,入侵者喜歡限制自己的接觸範圍。他們使用漏洞或後門進入系統的時間越長,就越有可能在完成目標之前被發現並鎖定。如果您保留密碼不變且未加鹽,則只是給他們提供了一種非常簡單的方式來冒充任何用戶身份回到系統,這是很難檢測和緩解的。

jmoreno
2015-10-30 11:19:26 UTC
view on stackexchange narkive permalink

我認為最好的表達方式是:2015年,您的用戶委託給您的最私人和個人信息是他們的密碼和用戶ID。保護它,不是用生活而是無知,不是能力,而是無能。

如果您不知道他們的密碼,也無法恢復他們的密碼,那麼沒有人可以竊取它。

任何能勝任的數字小偷,只要在名稱和地址以及一千個電子郵件地址/用戶名和密碼之間進行選擇,每次都將花費較晚的時間。

>

我了解成本和時間,但是從一開始就可以正確地做到這一點,實際上並不需要花費任何額外的時間,並且切換到更安全的方法並不是那個費時的。



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