簡體   English   中英

在方法中將密碼存儲為本地常量的安全隱患?

[英]Security implication of storing a password as a local constant in a method?

我想就最常見的安全性反模式進行自我教育。

假設地說,以以下方式存儲密碼有哪些安全隱患:

interface

type
  TFoo = class
   procedure DoSomething;
  end;

Implementation

procedure TFoo.DoSomething;
 const
   Password = 'Something';
begin 

end;

我知道正確的方法是使用哈希算法對密碼進行哈希處理並將該值保存在外部文件中,但是我對示例中的密碼如何暴露給惡意的第三方非常感興趣。

通過檢查可執行文件中的數據可以看到密碼。 例如,使用十六進制編輯器甚至記事本。

我想教育自己...

除了egur的正確答案之外 ,還可以回答未提出的問題,即任何密碼存儲在源代碼中的解決方案是否可以:

如前所述,常量String實際上出現在可執行文件中。

選擇1:

const
  PW0 = 'pas';
  PW1 = 'swo';
  PW2 = 'rd';
var
  PassWord: String;
...
initialization
  PassWord := PW0 + PW1 + PW2;

結果:可執行文件中的“密碼”。

選擇2:

const
  PW2 = 'rd';
  PW1 = 'swo';
  PW0 = 'pas';
var
  PassWord: String;
...
initialization
  PassWord := PW0 + PW1 + PW2;

結果:可執行文件中的“密碼”。

選擇3:

var
  PW2: String = 'rd';
  PW1: String = 'swo';
  PW0: String = 'pas';
  PassWord: String;

initialization
  PassWord := PW0 + PW1 + PW2;

結果:可執行文件中的“ rd”,“ swo”和“ pas”。

再多嘗試一下。 在記事本中打開可執行文件,然后自己查看。

此外,不用說,上述做法不是建議,而只是對該問題的補充價值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM