c# - 如何在方法中将密码作为参数传递
问题描述
我有下面的方法 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);
}
}
解决方案
如果您需要使用密码,那通常没问题。在某些情况下,将它们保留为 a 可能很有用,char[]
以便之后可以轻松地覆盖(归零)它们,或者SecureString
- 但坦率地说,这两种情况仅在运行代码的机器已经完全运行的非常特定的场景中有所帮助妥协,他们所做的只是让攻击者更不方便。所以在大多数现实世界的情况下:string
很好。
当然,如果您可以完全避免知道纯文本密码(证书、Windows 身份验证、应用程序密钥等),那么这可能是避免问题的一种方法。
推荐阅读
- c++ - std::shared_ptr 复制构造函数线程安全
- jquery - 具有向下滑动效果的置顶标题
- java - JSP 起始页错误:解析模板时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问
- reactjs - -bash:react-native:找不到命令 mac
- c# - 如何修复“MediaElement 不包含 CurrentState 的定义”
- java - 集群上的 Spark 进程是一个 java 进程
- python - 如何在 Kivy 中切换小部件的动画过渡
- java - Android Firebase 如何从当前用户 ID 读取数据?
- python - PACF 图是否显示大于 1 或小于 -1 的值?
- sass - 使用 BEM 进行 Sass 嵌套