安全存储密码的最佳方法

2023-12-22

在计算机上保存密码以使其无法被访问的最佳方法是什么?我想将它们加密存储在注册表中。我希望您能够重置密码,但这不适用于服务器。这是为了将它们存储在计算机上以记住它们并自动登录。

重要编辑:我需要能够从程序内检索纯文本密码,而不是其他任何地方。


加密保护数据 http://msdn.microsoft.com/en-us/library/aa380261%28v=vs.85%29.aspx and 加密解除数据保护 http://msdn.microsoft.com/en-us/library/aa380882%28v=vs.85%29.aspx是您在 Windows 上的最佳选择。他们使用登录凭据对数据进行加密,因此密码不会受到磁盘攻击。但是,同一用户下运行的任何程序都可以访问它们。我建议将它们存储在一个文件中,该文件的权限阻止其他程序访问它们(例如需要管理员权限才能访问的文件)。

托管类受保护的数据 http://msdn.microsoft.com/en-us/library/system.security.cryptography.protecteddata.aspx使用这些函数,因此可以从 C# 中使用它。

您还可以使用 P/Invoke 直接使用这些函数。有一些示例代码可以做到这一点here http://www.obviex.com/samples/dpapi.aspx.

为满足额外要求而进行扩展:

有一种方法可以确保您的程序是唯一能够访问密码的程序,而无需以管理员权限启动您的程序,尽管这需要做更多的工作。

基本思想是:创建一个 Windows 服务,该服务在安装应用程序时安装。当您的应用程序想要存储/检索用户密码时,应根据需要启动它。该服务将仅提供对具有权限设置的文件的读/写访问权限,以便只有管理员才能读/写它。额外的安全性来自于进程的 IPC 连接,该连接将使用命名管道 http://msdn.microsoft.com/en-us/library/windows/desktop/aa365590%28v=vs.85%29.aspx。然后你可以使用获取NamedPipeClientProcessId http://msdn.microsoft.com/en-us/library/windows/desktop/aa365440%28v=vs.85%29.aspx(抱歉,您需要 P/Invoke)通过查找连接到管道的客户端的进程 ID 来验证请求。

根据您对安全性的担忧程度,如果您有权访问有效证书,则可以使用代码签名来验证进程 ID。或者,您可以验证可执行文件的校验和或类似性质的内容。

这是我能想到的在 Windows 上创建您所寻求的安全性的唯一方法。您的应用程序还应该在将数据移交给 Windows 服务之前使用 ProtectedData 来加密数据,以防止硬盘攻击。

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

安全存储密码的最佳方法 的相关文章

  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 如何获取 BlackBerry 上的后台进程列表

    我正在寻找与 net rim device api system ApplicationManager getVisibleApplications 相对应的内容 但包括可能没有 UI 的应用程序 有任何想法吗 欢迎不合理复杂的解决方案 我
  • switch case 在 C 中无法正常工作

    我的程序中有一个小问题 当我按 2 或 3 或 4 时 它将正确显示 但之后当我 按 a 或 b 或 c 等 它将显示前一个结果而不是打印 Invalid 选项 我怎样才能解决这个问题 include
  • 函数式语言编译器相对于命令式语言编译器的优势

    作为这个问题的后续与 C 相比 F 的内置不变性有哪些优点 https stackoverflow com questions 2194201 what are the advantages of built in immutability
  • 需要更好、更简单地理解 CATransform3D

    请浏览这些图像 这是我从一些在线资源获得的代码 它确实改变了我的对象 除此之外 我一无所知 我是 CATransform3D 的新手 想确切地了解它是如何工作的 CATransform3D transform CATransform3DId
  • 哪个本地数据库适合我的情况?

    我将构建一组应用程序 其中一个应用程序是无人值守应用程序 用 VB6 编写 它将将从各种来源接收的数据写入本地数据库 所有其他应用程序 将在 VS 2008 c 3 0 中编写 将读取此数据 主要是出于报告原因 我不想要 SQL Serve
  • 这个声明有什么作用? console.log.bind(控制台)

    我正在使用 JavaScript 并遇到语句问题 console log bind console 请告诉我这个声明实际上做了什么 我已多次应用此方法 但没有任何作用 在 JavaScript 中 this函数调用内由下式确定how该函数被
  • iOS 自定义键盘 - 相机不工作

    我想创建一个自定义键盘 充当条形码扫描仪 我已经完成了整个编码 但输出并不符合预期 我被要求提供相机权限 第一次 但相机没有向视图发送视频 我认为 出于安全原因 使用键盘可能会受到一些限制 1 打开手电筒 void turnFlashOn
  • 将 csv 文件合并到一个文件中

    我有一组 csv 文件 我想将它们合并到一个 csv 文件中 需要一些时间 但我在目标路径中找不到该文件 hdfs dfs getmerge DATA data1 result csv 任何帮助 谢谢 getmerge Usage hado
  • Unix:调用 select() 时读取文件描述符关闭时会发生什么

    假设我在包含一堆读取文件描述符的 FD SET 上调用 select 如果在 select 调用期间 文件描述符之一关闭 会发生什么情况 假设发生某种错误 那么我有责任从集合中查找并删除已关闭的文件描述符吗 我不相信这是在任何地方指定的 某
  • 为什么 Rails 4scaffold 创建 json.jbuilder 文件?

    我使用以下命令生成了一个新的 Rails 4 rc1 项目rails new并使用生成了一个脚手架rails g scaffold 正如预期的那样 它已经创建了迁移 控制器和所有必需的视图文件 它还创建了 show json jbuilde
  • 使用 VBA 选择单个节点 XML 对象

    您好 我正在尝试访问下面的 XML 响应对象
  • 权限拒绝:启动 Intent 未从 uid 导出

    当我从我自己的应用程序打开手机中已安装的应用程序时 我遇到了这个问题 权限拒绝 启动 Intent act android intent action MAIN 猫 android intent category LAUNCHER cmp
  • HTML5画布点击事件

    我做了一个正方形数组 ctx fillStyle rgb 0 0 0 for x 0 x lt 25 x for y 0 y lt 25 y ctx fillRect x y 20 20 我想要一个正方形在点击时改变它的颜色 我怎样才能做到
  • UITableViewCell 设置最初选择的

    您好 我遇到了这样的情况 在 iPad 应用程序中 我的master controller有清单和细节控制器有它的细节 一个典型的UISplitViewController图案 我想要实现的是 我的第一行应该最初被选择 然后我想给用户选择
  • Blackberry - 如何渲染 PDF 文档?

    如何通过您自己的应用程序阅读 BlackBerry 中的 pdf 文件 在黑莓中没有 API 或库可以做这样的事情 不过你可以尝试集成谷歌文档 http docs google com or www docspal com http www
  • CALayerInvalidGeometry 在 iOS9 上崩溃“具有非有限位置的子层 [inf inf]”

    iOS 9 Swift 2 我有一个带有自定义视图的视图控制器 每当我从导航控制器堆栈中弹出它时 它就会崩溃 引用以下崩溃 Terminating app due to uncaught exception CALayerInvalidGe
  • 适用于 LG G4 的带数字和小数点的 Android 键盘

    我在 Android 中使用以下元素EditText 有一个带有数字和小数点的键盘 用于显示键盘布局输入金额 例如 22 12 android inputType numberDecimal 它适用于所有设备 如三星 Nexus 索尼等 T
  • 无法加载模板:uib/template/modal/window.html

    我觉得我已经尝试了一切 但仍然收到错误 无法加载模板 uib template modal window html 在我的索引文件中我添加了以下内容 在我的应用程序文件中我添加了 ui bootstrap 在我的控制器文件中我添加了以下内容
  • 如何使容器中的行垂直居中? [复制]

    这个问题在这里已经有答案了 默认情况下 该行与顶部对齐 我尝试将 margin top auto 和边距底部 自动 但不起作用 也垂直对齐 居中 也不起作用 有一个简单的解决办法吗 Thanks container background c
  • 安全存储密码的最佳方法

    在计算机上保存密码以使其无法被访问的最佳方法是什么 我想将它们加密存储在注册表中 我希望您能够重置密码 但这不适用于服务器 这是为了将它们存储在计算机上以记住它们并自动登录 重要编辑 我需要能够从程序内检索纯文本密码 而不是其他任何地方 加