首页 > 解决方案 > 如何在方法中将密码作为参数传递

问题描述

我有下面的方法 login() 接受两个参数,用户名和密码。我计划在另一个类中使用此方法,但我不确定将密码传递给方法时是否有任何约定。我应该为密码使用不同的数据类型吗?当我尝试调用该方法时,我是否正确使用它?

class Libary {

    public string login(string username, string password) {
              externalObject.WriteLine("login {0} {1}", username, password);
              string response = externalObject.Execute();
              return response;
    }

}

class HomePage {

     public string callLoginMethod(){
               string username = "dummyUsername";
               string password = "dummyPassword";

               Library library = new Library();
               string output = library.login(username, password);
     }

}

标签: c#stringpasswords

解决方案


如果您需要使用密码,那通常没问题。在某些情况下,将它们保留为 a 可能很有用,char[]以便之后可以轻松地覆盖(归零)它们,或者SecureString- 但坦率地说,这两种情况仅在运行代码的机器已经完全运行的非常特定的场景中有所帮助妥协,他们所做的只是让攻击者更不方便。所以在大多数现实世界的情况下:string很好。

当然,如果您可以完全避免知道纯文本密码(证书、Windows 身份验证、应用程序密钥等),那么这可能是避免问题的一种方法。


推荐阅读