如何为 windows 程序保存 email/password 组合?
How to save an email/password combination for windows program?
我正在创建一个 windows 服务,该服务必须在特定的时间间隔向不同的人发送电子邮件。我在需要安全连接的服务器上使用一个帐户。
我找到了这个参考:https://nimblegecko.com/how-to-store-login-details-securely-in-application-config-file/
我试图实现的代码是这样的:
var configuration = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
configuration.AppSettings.Settings["username"].Value = EncryptString("new username", configPassword);
configuration.AppSettings.Settings["password"].Value = EncryptString("new password", configPassword);
configuration.Save();
我的问题是将用户名和密码编码为固定文本似乎仍然会导致与硬编码相同的暴露,对吗?
任何帮助将不胜感激?
嗯...不要存储在 AppConfig 设置中。
如果您不能为此使用数据库(存储散列和加密字符串)为此获取一个新文件,您甚至可以保护它以仅允许服务用户帐户 read/modify 它或存储它在服务配置文件目录(其用户帐户配置文件目录)
我会使用比 xml 更容易阅读的 ini 文件结构来完成它,其中每一行都包含类似
的内容
var mergedCredential = string.Format("{0}|{1}", "user@here.com" , "P@ssw0rd");
User1HashedCredentials=EncryptString("new username", mergedCredential);
我使用管道“合并”凭据,因为您可以阻止用户在用户名上使用它
解密时按“|”拆分
var credentials = DecryptString("new username", User1HashedCredentials);
var splitted = credentials.Split('|');
Username = splitted[0]
Password = splitted[1]
ini文件示例:
[Users]
Count=5
[SendEmailSection]
User1=dsaa$#asdasd$#@rr==
User2=dggggjh7/sd$#@rr==
User3=dsaasd"/$%asdasd$#@rr==
User4=dsas/&"dasd$#@rr==
User5=dsAa&s3dasd$#@rr==
哪个更容易维护和修改。您甚至可以制作自己的专用 ini reader/writer 阅读部分,按“=”分割
我不建议将凭据存储在 app.config 文件中。如果您计划存储在那里,那么您应该使用适当的加密和解密进行存储。
关于您的信息,您可以参考此 link
但我建议您使用 window 凭据管理器来存储您的密码
有关更多详细信息,您可以使用他们的 nuget 包和示例
Another reference
您可以在应用的偏好设置中找到它。
右键单击您的项目。 Select补充。添加 .settings 表单。然后创建一个包含电子邮件、密码等的 table
我正在创建一个 windows 服务,该服务必须在特定的时间间隔向不同的人发送电子邮件。我在需要安全连接的服务器上使用一个帐户。
我找到了这个参考:https://nimblegecko.com/how-to-store-login-details-securely-in-application-config-file/ 我试图实现的代码是这样的:
var configuration = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
configuration.AppSettings.Settings["username"].Value = EncryptString("new username", configPassword);
configuration.AppSettings.Settings["password"].Value = EncryptString("new password", configPassword);
configuration.Save();
我的问题是将用户名和密码编码为固定文本似乎仍然会导致与硬编码相同的暴露,对吗?
任何帮助将不胜感激?
嗯...不要存储在 AppConfig 设置中。
如果您不能为此使用数据库(存储散列和加密字符串)为此获取一个新文件,您甚至可以保护它以仅允许服务用户帐户 read/modify 它或存储它在服务配置文件目录(其用户帐户配置文件目录)
我会使用比 xml 更容易阅读的 ini 文件结构来完成它,其中每一行都包含类似
的内容var mergedCredential = string.Format("{0}|{1}", "user@here.com" , "P@ssw0rd");
User1HashedCredentials=EncryptString("new username", mergedCredential);
我使用管道“合并”凭据,因为您可以阻止用户在用户名上使用它
解密时按“|”拆分
var credentials = DecryptString("new username", User1HashedCredentials);
var splitted = credentials.Split('|');
Username = splitted[0]
Password = splitted[1]
ini文件示例:
[Users]
Count=5
[SendEmailSection]
User1=dsaa$#asdasd$#@rr==
User2=dggggjh7/sd$#@rr==
User3=dsaasd"/$%asdasd$#@rr==
User4=dsas/&"dasd$#@rr==
User5=dsAa&s3dasd$#@rr==
哪个更容易维护和修改。您甚至可以制作自己的专用 ini reader/writer 阅读部分,按“=”分割
我不建议将凭据存储在 app.config 文件中。如果您计划存储在那里,那么您应该使用适当的加密和解密进行存储。
关于您的信息,您可以参考此 link
但我建议您使用 window 凭据管理器来存储您的密码 有关更多详细信息,您可以使用他们的 nuget 包和示例
Another reference
您可以在应用的偏好设置中找到它。 右键单击您的项目。 Select补充。添加 .settings 表单。然后创建一个包含电子邮件、密码等的 table