C# 和 WPF - 使用 SecureString 作为客户端 HTTP API 密码

2024-03-17

在编写 WPF 应用程序时,PasswordBox将输入的密码存储为SecureString。这完全有道理。但是,我想通过 HTTP API 发送密码,并且HttpClientPostAsync 似乎接受表单编码数据的字符串。

我知道其他人也问过相关问题,最值得注意的是SecureString 在 C# 应用程序中实用吗? https://stackoverflow.com/questions/26190938/is-securestring-ever-practical-in-a-c-sharp-application,但我还没有找到令人满意的方法来发送这个SecureString到 Http 端点,而不先将其转换为String。这种转换完全违背了目的SecureString首先(因为它将明文直接放回到托管内存中)。

有没有一种规范正确的(最好是直接的)方法来做到这一点?

完全公开 - 我无法控制 HTTP API。


我认为,虽然不完美,但对您来说最好的解决方案是使用DecryptSecureString方法,发布者rdev5 https://stackoverflow.com/users/901156/rdev5 on this https://stackoverflow.com/a/33679932/5686352答案(毕竟,密码无论如何都是通过网络以明文形式传输的)

rdev5的方法解密SecureString到一个字符串中,按照您指示的方式处理密码,然后将其从内存中删除。这减少了密码在内存中的存储时间,从而缩短了密码被窃取的时间。

Strings.DecryptSecureString(secureString, (password) =>
{
    // Do your API call here
});

P.S.:正如原帖中指出的,请确保不要保存内容password别处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 和 WPF - 使用 SecureString 作为客户端 HTTP API 密码 的相关文章

随机推荐

  • 如何将PHP编译成操作码并在生产环境中运行?

    注意 这不是facebook最近的hiphop项目 我只是想把它转换成opcode not c c 现在还有解决办法吗 演示永远是最好的 您正在寻找的是PHP加速器 http en wikipedia org wiki PHP accele
  • 创建 Dockerfile - docker 在每个新构建上从头开始

    我正在尝试构建一个 dockerfile 迭代地添加行和测试 我的理解是 docker 将缓存已经构建的行 并从我添加的新行开始 情况似乎是 每次我在容器上调用 build 时 它只是从头开始构建 这是正常的吗 如果不是 我做错了什么 正如
  • REngine”不包含“SetDllDirectory”、“RDotNet”的定义

    My Code using System using System Collections Generic using System ComponentModel using System Data using System Drawing
  • Android 通过按钮打开相机

    我希望这不是一个重复的问题 但我正在制作一个应用程序 我想要一个按钮来打开相机应用程序 单独的默认 Android 相机 我怎样才能做到这一点 我知道有一个功能 intent setAction MediaStore ACTION IMAG
  • 在 Big Query 上向表中插入数据时出现 IO 异常

    我正在尝试在大查询的表中插入数据 我遵循了一些文档 我的最终代码如下所示 HttpTransport TRANSPORT new NetHttpTransport JsonFactory JSON FACTORY new JacksonFa
  • 如何使用jquery放大图像

    我只是想知道如何使用 jquery 放大图片 像这个网站这样的东西 当您单击大图像时 它会放大 您可以移动光标并在放大时查看图片的其他部分 如果有人可以向我展示链接或将我引向正确的方向 我将不胜感激 它们不会放大 真正发生的是 当您单击 缩
  • lua多重赋值

    lua中是否有任何多重赋值的方法 使得右侧缺失的值不被视为nil 类似于 a b c 1 但得到 a 1 b 1 c 1 结果 很遗憾 a b c 1 不起作用 我需要这个 因为我可能在右侧有复杂的表格 并且我想保持它简短 没有任何附加变量
  • C++ 中的结构继承

    Can a struct在C 中可以继承吗 Yes struct完全就像class除了默认的可访问性是public for struct 虽然它是private for class
  • 在构造函数中自动生成唯一 ID

    使用 VB net 创建一个名为 Staff 的新类 它具有三个属性 Name LastName ID 应适合用作数据库中的主键 提供类构造函数来填充 Name 和 LastName ID 应在构造函数内自动生成 不应传入 我知道如何创建类
  • ExtJS菜单checkItem:如何防止在某些情况下出现项目检查事件?

    对于菜单checkItem 当用户点击它时 默认会触发checkchange 我想知道如果满足某种情况 如何在单击后不更改其检查状态 换句话说 停止此事件链 我尝试了以下代码 但不起作用 listeners click function i
  • 查询方法参数应该是可以转换为数据库列的类型或包含此类类型的列表/数组

    我有一个具有自定义数据类型的数据库FollowEntityType作为一个列 Entity primaryKeys arrayOf id type tableName follow info data class FollowInfoEnt
  • 正确的 strtod 实现?

    简单的问题 双精度数字 1 15507e 173 的正确位表示是什么 完整的问题 如何确定这个数字的正确解析 背景 我的问题来自这个答案 https stackoverflow com questions 1994658 locale in
  • 通过引用传递基元类型而不是通过值返回有效率上的好处吗?

    在 C 中 通过引用传递基本类型而不是通过值返回是否有效率优势 通过引用传递基元类型而不是通过值返回是否有效率优势 不太可能 首先 除非您从探查器中获得的数据让您有理由这样做 否则您在设计程序时不应担心性能问题 选择simplest设计 以
  • 从逗号或制表符分隔的文本文件中读取

    我需要从可以用逗号或制表符分隔的文件中读取数据 我现在有一个函数 getcsv 但它只接受一个可能的分隔符 有什么想法如何处理这个问题吗 Thanks 从 PHP 5 3 开始 您可以使用str getcsv http php net ma
  • Mac PyQt5 菜单栏在取消焦点重新聚焦应用程序之前不会激活

    我在 Mac 中使用 PyQt5 创建 Qt 菜单栏时遇到问题 我遇到的问题是菜单栏会显示 但直到我取消应用程序的焦点 通过单击其他应用程序 然后再次重新聚焦 Qt 应用程序时才会做出反应 这是我的环境 操作系统 塞拉利昂 10 12 Py
  • python类中私有变量的实际实现[重复]

    这个问题在这里已经有答案了 可能的重复 Python 中对象名称前的单下划线和双下划线的含义 https stackoverflow com questions 1301346 the meaning of a single and a d
  • h2o.glm 与 R 中的线性回归的 glm 不匹配

    我一直在将 H2O ai 版本 3 10 3 6 与 R 结合使用 我正在努力用 h2o glm 复制 glm 的结果 我期望得到完全相同的结果 在这种情况下 根据均方误差进行评估 但我发现 h2o 的准确性一定更差 由于我的模型是高斯模型
  • 使用 CSS 影响 iframe 内的 div 样式

    是否可以仅使用 CSS 来更改驻留在页面 iframe 内的 div 的样式 你需要 JavaScript 它与在父页面中执行此操作相同 只是您必须在 JavaScript 命令前加上 iframe 的名称 请记住 同源策略适用 因此您只能
  • Java中JTextArea的自动动态扩展/收缩

    我首先创建一个特定大小的 JTextArea 用户可以在其中添加文本 但如果文本太长 垂直或水平 则会被截断 我希望 JTextArea 自动扩展或收缩 用于删除文本 我将来可能允许用户更改字体和字体大小 因此如果我可以避免使内容增加 减少
  • C# 和 WPF - 使用 SecureString 作为客户端 HTTP API 密码

    在编写 WPF 应用程序时 PasswordBox将输入的密码存储为SecureString 这完全有道理 但是 我想通过 HTTP API 发送密码 并且HttpClientPostAsync 似乎接受表单编码数据的字符串 我知道其他人也