草庐IT

securestring

全部标签

C# SecureString 问题

有没有什么方法可以在不包含安全性的情况下获取SecureString的值?例如,在下面的代码中,只要您执行PtrToStringBSTR,字符串就不再安全,因为字符串是不可变的,并且垃圾回收对于字符串来说是不确定的。IntPtrptr=Marshal.SecureStringToBSTR(SecureStringobject);stringvalue=Marshal.PtrToStringBSTR(ptr);如果有办法获取非托管BSTR字符串的char[]或byte[]会怎么样?这是否意味着垃圾收集更可预测(因为您将使用char[]或byte[]而不是字符串?这个假设是否正确,如果是这

c# - SecureString "encrypted"如何仍然可用?

根据MSDNSecureString内容被加密以提高安全性,这样如果程序被交换到磁盘,字符串内容就无法被嗅探到。我想知道这种加密怎么可能?该算法将是固定的,因此要么是众所周知的,要么是可扣除的(比如工业算法中广泛使用的七种算法之一),并且程序中的某处必须有一个key。因此攻击者可以获取加密的字符串,获取key并解密数据。这种加密有什么用? 最佳答案 我引用了一篇关于DPAPI的文章用于派生key。这应该可以回答您关于SecureString的大部分问题。是的,SecureString有缺点并且不完全安全,有一些方法可以访问数据,例如

c# - 在 ASP.NET 中使用 SecureString 有什么好处吗?

如果我理解正确,这是为了将纯文本保留在内存之外,这样应用程序就可以安全地抵御对内存、垃圾堆或分页到磁盘的内存的深奥攻击。向SecureString提供非托管字节并一次消耗一个非托管字节——然后从内存中删除该字符串。(如果我跑题了请纠正我!)在ASP.NET中,secret收集在网络表单中,该表单以HTTPS回传。但是随后Request对象将表单中的所有请求值转换为名称值对并将它们放入一个集合中,例如Request["TxtPassword"]--所以甚至在我能得到字符串之前,它已经被不安全地写入内存。更糟糕的是,如果我使用的是控件,那么不安全的表示形式将在TextBox的属性中包含更多

c# - SecureString 用于存储在内存中并显示密码?或者是其他东西?

我一直在使用C#为自己编写一个小程序,我可以使用它来存储我的密码,然后检索它们以进行查看/编辑。虽然密码以加密格式存储到磁盘中,但当它们被读入内存以在表单上显示/编辑时,它们是未加密的。我了解到内存中存在未加密的密码是一个相当大的安全问题,所以我遇到了SecureString类。有没有比使用SecureString类更安全的方法,还是SecureString名副其实? 最佳答案 SecureString将其文本加密保存在内存中,您可以在不需要时立即将其丢弃。问题是,当你想显示它或以几乎任何其他方式使用它时,你必须将它转换为普通字符串