如果我理解正确的话,这是为了防止纯文本进入内存,这样应用程序就不会受到对内存、垃圾堆或分页到磁盘的内存的神秘攻击.SecureString被送入非托管字节,一次消耗一个非托管字节,然后从内存中删除该字符串.(如果我走远了,请纠正我!)
在ASP.NET中,秘密被收集在Web表单中,该表单以HTTPS形式回发.但是,Request对象会将表单中的所有请求值转换为名称值对,并将它们放入一个集合中,例如Request["TxtPassword"]--因此,甚至在我可以获取字符串之前,它就已经被不安全地写入内存了.更糟糕的是,如果我使用的是控件,那么不安全的表示形式在TextBox的属性中将有更多的托管字符串.
要使用此SecureString执行任何操作,我需要一个接受非托管字符串的API--因此似乎不能将安全字符串用于存储的proc参数或其他更多内容.
我这样做是错误的还是愚蠢的try 使用SecureString,而不是将不安全字符串的副本泄漏到托管内存中?
切换到OAuth或Windows auth不是一个选项.