- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
msdn documentation在 PasswordBox.Password
上说:
When you get the Password property value, you expose the password as plain text in memory. To avoid this potential security risk, use the SecurePassword property to get the password as a SecureString.
因此,我在 PasswordChanged
事件上将 SecurePassword
发送到我的 View 模型,期望一切都是安全的,但是如果我使用 Snoop 检查我的应用程序,在 PasswordBox 的 Password 中
属性我看到我以纯文本形式输入的密码。这难道不会扼杀使用 SecurePassword 的全部目的吗?我还应该做些什么来保护密码吗?
最佳答案
这是我的拙见。
Snoop 在运行的应用程序中注入(inject)其代码。所以,它基本上是一个黑客工具。一个非常易于使用的黑客工具,仅适用于您的 GUI。这就是为什么简单地改变任何项目的可见性来向用户隐藏一些数据是一个糟糕的安全决策。有关限制、访问和安全的所有内容都不应该在 UI 层处理。 How to Snoop proof your wpf application?有办法但答案的要点是,您必须以不允许窥探违反任何内容的方式设计应用程序。例如,验证服务器上的所有内容。
回到你的问题:
有两种情况。第一个是:用户创建密码。我相信如果用户或用户的恶意软件此时会看到密码,这不是一个问题。然后您接收并存储安全字符串。并清除用户密码。
第二种情况:您向用户显示存储的密码。诀窍是——你不显示它。您知道密码的长度,因此可以使用 **** 显示刚刚禁用的文本框。如果用户想要更改密码 - 您给他实际的密码框,他必须在其中填写旧密码和新密码,然后我们回到场景#1。
一线希望是:
当用户输入密码时,这并不是什么大问题,它以明文形式存在于内存中的某个位置,因为用户知道他输入的内容,并且恶意软件可以跟踪按下的按键。
存储密码后,您永远不会将其返还给用户
<小时/>更新:这是密码框的密码属性的源代码
public string Password
{
[SecurityCritical]
get
{
string password;
using (SecureString securePassword = this.SecurePassword)
{
IntPtr ptr = System.Runtime.InteropServices.Marshal.SecureStringToBSTR(securePassword);
try
{
unsafe
{
password = new string((char*)ptr);
}
}
finally
{
System.Runtime.InteropServices.Marshal.ZeroFreeBSTR(ptr);
}
}
return password;
}
所以,我猜MSDN的意思是,每当你访问Password属性时,通过在代码中调用它(或者在调试时在VS中查看它,或者在Snoop中查看它),你调用它的get方法,该方法将SecuredString解密为纯文本,将其暴露给内存。如果您不调用Password属性并且不通过在软件工具中检查来调用它,那么密码不会以纯文本形式显示在内存中。
关于wpf - 密码不是通过PasswordBox.Password 属性泄露的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32751442/
我在 Controller 中有此功能,但我无法重置密码,因为我想将字符长度更改为 5 位数字。 public function postReset(Request $request) { $th
我正在学习使用 maven password encryption能力,我想知道如何选择参数 .有两件事我不明白: 1) mvn --encrypt-master-password foobar总会给
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关闭 9 年前。 这个问题似乎不是关于 a specific programming problem,
我想知道其他电子商务/行业网站上“忘记密码”流程的“标准”使用率是多少?目前,没有多少人会访问我网站上的“忘记密码”链接,但这主要是因为大多数人没有密码。我正在安装新的登录名(这将鼓励人们创建密码),
从存储库中提取源代码需要我的密码。 SourceTree 默认记住此密码。我不希望 SourceTree 记住我的密码。我每次都必须禁用此功能! 如何禁用此默认行为?谢谢! 最佳答案 我在 Mac 上
这个问题已经有答案了: When to use single quotes, double quotes, and backticks in MySQL (13 个回答) 已关闭 5 年前。 Erro
我正在为我的 iOS 应用程序使用 Firebase 身份验证服务。我想通过电子邮件或谷歌登录提供商登录应用程序。我申请了firebase instractions . 我可以使用电子邮件和密码登录。
我正在尝试了解角色密码在 Postgres 中的运作方式。 https://www.postgresql.org/docs/current/static/sql-createrole.html表示加密
为什么“确认密码和密码相同”部分不起作用?意思是,使用“getElementById”来处理密码和确认密码的部分。每个部分都有效,但特定部分除外。它不会在文本字段周围显示红色框。谁能帮我吗?
我遇到了 Flutter 的 TextInputType 没有密码类型的问题: /// All possible enum values. static const List values = con
我正在尝试使用 Azure 应用服务创建应用程序。 但是,它显示上述错误:无法识别的参数: 我使用的命令是 --> az ad app create --available-to-other-tena
我正在尝试使用 Azure 应用服务创建应用程序。 但是,它显示上述错误:无法识别的参数: 我使用的命令是 --> az ad app create --available-to-other-tena
我有(数千个)包含各种(数十亿)行的 csv 文件,例如: 组合.csv example0@domain.tld:passw0rd ex.a.m-pl_e1@domain.tld;p@££w0r46&
在我的 Spring 3 MVC 应用程序中,用户需要保存密码,如果他们也能够在保存时确认密码,那将是一个不错的功能。 在 bean 中,我使用基于注释的验证。是否有注释 validator 可用于执
我在 pgsql 中创建了一个没有密码的新用户。但是当我尝试为这个用户创建一个数据库时,它提示输入密码 >createuser -d -S -R -U postgres test1 Password:
我创建了 Form 这种形式的小部件有多个 TextFormFeild 我创建了自定义 BoxFeild .我面临与 相关的问题auto-validation 来自表单小部件。无法验证确认密码中的密码
在 SQL Server 2008 R2 标准版上,每当我尝试通过报表管理器更新数据源凭据时,我都无法保存更改,因为它会报告消息 "The password is not valid. Please
我有一个用 JAVA 编写并部署在 Wildfly 8.2 上的小型 REST 应用程序。当我尝试使用 javax 安全库登录时,出现错误 FailedLoginException: Password
验证错误:子“密码”失败,因为运行测试时显示[“密码”是必需的]错误 我使用 hapijs v17.2.3 和 mongodb 作为后端。我正在尝试使用 lab 和 code 执行单元测试。这是我的t
我使用 visual studio 2010 创建了一个登录表单,其中包含用户名的输入文本和 userpass 的密码类型输入。我有最新的 chrome 版本 59.0.3071.115(官方构建)(
我是一名优秀的程序员,十分优秀!