问题标签 [securestring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
3770 浏览

.net - 检索 SecureString 值的最佳方法

我正在尝试构建一个自动化工具,用于检查我的支票账户上的最近交易(监视我妻子的购买,哈哈)。该工具通过 SSL 发布我的用户名和密码,然后抓取银行页面内容以进行交易。当然,一切都是通过 SSL 发送的,但为了使其自动化,我需要将我的银行用户名和密码存储在某个地方。

所以我开始了 .NET 字符串、安全性和 SecureString 的兔子洞。我制作了一个表格,将我的用户名和密码输入到 SecureString(逐个字符)中,确保不使用任何 System.String。然后我从 SecureString 中检索一个 char[],从中获取一个 byte[],将 char[] 归零,使用 DPAPI 和内置代码的 salt 字符串加密 byte[],将加密的 byte[] 转换为 Base64 System.String,将字节 [] 归零,并将加密字符串保存到应用程序设置中。

问题是,如何在不将其设为 System.String 的情况下将其返回到 HttpWebRequest 中的 POST 数据中。我想出的是以下函数(它还对字符进行 URL 编码而不生成字符串)。

在我完成它们之后,我将 char[] 清零。在将返回的 byte[] 写入 HttpWebRequest 流后,我还要确保将它们归零。这是安全的还是 GC 会复制 char[] 和 byte[] 对象?这比使用 System.String 更好吗?我读过其他帖子说要使用不安全的代码并在非托管内存中做所有事情,但最后我仍然需要为我的 HttpWebRequest 获取一个字节 []。

0 投票
2 回答
1080 浏览

c# - Oracle DB 和 SecureString

我目前将用户密码存储在SecureString. 如果与数据库的连接重置,它也会保留。

我的问题是,我正在尝试将此密码传递给OracleParamater,但我不确定它是否支持它。

Oracle 的Oracle.DataAccessdll 是否支持SecureStringBStr?因为如果我必须将其转换为字符串,那将有点违背SecureString.

- - 编辑

我知道这SecureString是通过尽可能少地保留未加密的密码副本来减少攻击面。问题是在某些时候你当然必须解密密码才能使用它。如果我可以在 an 中传递 achar[]或 aBStr或安全字符串本身,OracleParameter那么我可以在调用返回后清除它。但是如果我必须创建一个字符串才能将其传递给 Oracle,那么我刚刚创建了一个新的不可变密码副本。所以我不确定我当时获得了多少。

0 投票
3 回答
2347 浏览

c# - Rfc2898DeriveBytes + PBKDF2 + SecureString 是否可以使用安全字符串而不是字符串?

我有一个函数GetPassword,它返回一个SecureString类型。

当我将此安全字符串传递Rfc2898DeriveBytes给生成密钥时,Visual Studio 显示错误。我有限的知识告诉我,这是因为Rfc2898DeriveBytes只接受字符串而不接受安全字符串。有解决方法吗?

0 投票
2 回答
294 浏览

c# - SecureString 和 IIS?

  • 用户有一个ASPX页面。

  • 它有textox输入(密码)。

  • 用户填写他的密码。

  • 页面被提交给 IIS。

  • 它首先进入 iis。

  • 在这个阶段,密码以纯文本形式存储在内存中。

  • 现在 Asp.net 将其密码放入安全字符串中。

  • 做一些计算后,页面被发送到客户端。


来自IIS POV:

他实际上仍然将密码视为纯文本……不是吗?

0 投票
7 回答
78184 浏览

c# - 如何将字符串显式转换为securestring

我希望将文本框中输入的文本转换为 c# 中的安全字符串。

0 投票
2 回答
3221 浏览

php - 在 PHP 文件中隐藏 MySQL 数据库密码的问题

我有一个带有表单的 HTML 文件,一旦用户单击“提交”,就会调用一个 PHP 文件,该文件连接到 MySQL 数据库并使用表单中的数据对其进行更新。

问题是,如何在我的 PHP 代码文件中屏蔽/隐藏 MySQL 数据库的密码?

我正在阅读有关使用“配置”文件和/或将内容移动到不同目录中以防止其他人访问它们的各种内容-理论上我明白了-但是我应该采取的实际步骤是什么做到这一点?比如我从哪里开始?第 1 步是什么,第 2 步是什么,等等?每个人似乎都提供了一小段代码,但我还没有找到任何关于此的好的从头到尾的教程。

我打电话给 GoDaddy - 我的帐户和数据库所在的位置 - 看看他们的技术支持人员是否可以提供帮助 - 没有人能够告诉我具体要做什么,从哪里开始等。

有人可以帮忙吗?

0 投票
1 回答
2957 浏览

c# - 在 C# 中,处理密码等敏感数据的正确方法是什么?

这个应用程序显示一个带有文本框的表单,用户应该在其中输入用于解密文档的密码。

我的代码如下所示:

但有人告诉我,从技术上讲,这是一个安全漏洞,因为即使在应用程序关闭后,代表密码的数据也可能保留在内存中。

我尝试使用 System.Security.SecureString 类,但现在我正在处理指向 CoTaskMem 的指针,这似乎使问题变得更糟:

如您所见,我似乎并没有让应用程序更安全,因为迟早我将不得不接受输入(passwordTextBox.Text)并将其转换为我可以传递给 DecryptDocument() 的字符串功能。

有没有办法解决这个问题,或者我应该只处理这个安全漏洞?

0 投票
1 回答
156 浏览

c#-4.0 - Securestring 和其他隐藏字符串数据的方法

我最近遇到了 SecureString,但正如你们大多数人所知,您将无法使用它,因为您想要使用的大多数函数都接受字符串作为参数,而不是 SecureString。

那么如何使用 SecureString 呢?

如果我需要跨多个程序传递字符串,如果字符串是敏感信息,那么与纯字符串相比,字节数组是否更安全?

0 投票
3 回答
4583 浏览

c# - Reading single chars from a .NET SecureString in C#?

WPF's PasswordBox returns a SecureString, which hides the password from snoopers.

The problem is that you eventually have to get the value of the password, and the suggestions I've found on the net all involve copying the value into a string, which gets you back to the problem of snoopers.

But if you really think about it, you don't really need the value, as a string. I mean, what do you do with a password? You hash it and then compare the result to a saved hash, and see if they are the same.

In other words, you don't need to convert the SecureString into a string, you just need to be able to iterate over the individual characters in the string.

But how?

How do I loop over the individual characters in a BSTR, in C#, without converting it to a managed string?

EDITING: the solution, in case the link disappears:

The Marshall class provides methods that can extract individual bytes or ints from an IntPtr, at given offsets. A BSTR object contains an array of 16-bit characters, terminated by two null bytes. So you can access them by looping:

(I don't care for that flow control. I'd have used a do...while, rather than prepopulate b with a dummy value, or I'd have used a for(;;) loop, with internal breaks, or I'd have looped on the length, which I explain how to get, below.)

Also, I'd probably use:

Reading the entire unicode chars, instead of just the low bytes of each.

You can get the length of the BSTR with:

This is the number of bytes, not including the nulls, not the number of chars.

Also - use:

0 投票
2 回答
8334 浏览

security - PowerShell 的 ConvertFrom-SecureString -key 的安全性如何

我有一个模块,其中包含一些带有一些私有数据的字符串,这些数据应该很难获得,但经常更改。我需要将此脚本放在可以访问它的各种机器上,并且代码由不应该拥有用于派生输出的信息的人读取。

我真的很担心不时更改的字符串,因此我正在考虑创建一个脚本,该脚本提示输入这些值作为安全字符串,并使用密钥对其进行加密并将它们转储到 xml 文件中。然后使用 XML 文件提供字符串。任何从该模块运行需要该数据的命令的人都必须提供密钥,以便可以解密字符串。

这基本上是我期望做的,但我将处理对象

我了解该字符串将使用 Rijndael 加密算法进行加密,我相信该算法也称为 AES。

如果可以访问脚本,需要多少努力才能破解它位于 xml 文件中的加密密钥?