安全存储密码的最佳方法

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(使用前将#替换为@)

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

  • SOAP Web 服务的命名空间是否区分大小写?

    我尝试部署一个 Web 服务 并将其更改为一台机器 当我测试其中一个 Web 方法时 我收到一条错误消息 服务器无法识别 HTTP 标头 Soapaction 的值 我做了一些搜索问题 当命名空间存在差异时 似乎有时会发生该错误 我查看了我
  • 为什么表达式树不能包含命名参数规范?

    使用 AutoMapper 我找到了一个非常适合命名参数的地方 ForMember s gt s MyProperty opt gt opt MapFrom s gt BuildMyProperty s isAdvanced false 但
  • 为什么Java不支持C中的clrscr这样的函数?

    我有一个问题 对很多人来说可能听起来很愚蠢 但我不能停下来把它发布在这里 因为在互联网上找不到任何东西 为什么java没有我们在C中使用的clrscr之类的函数 如果我创建了一个基于用户输入反复迭代的 java 控制台应用程序 然后如果我想
  • 如何将多种语言设置放入单个 .clang-format 文件中

    我想为 java javascript 和 c 创建一个 clang 格式 我知道如何转储单一语言的示例配置 但不知道如何合并这 3 个配置文件 有关如何将多种语言配置放入单个文件中的示例 BasedOnStyle LLVM IndentW
  • JPG、DOC、PDF 等文件是否也编译成程序集?

    Q1 Does aspnet compiler exe将网站目录中包含的所有文件 甚至 JPG DOC 和 PDF 类型 编译成程序集 如果将图像添加到Web项目中的文件列表中 从而将它们添加到项目文件中 这些图像也会被VS编译成程序集吗
  • 保存到会话状态的 DataTable 丢失事件处理程序

    我有一个来自强类型数据集的数据表 该数据集在 TableNewRow 事件上有一个事件处理程序 用于初始化一些日期字段 当我将此表保存到会话状态时 事件处理程序会正常触发 直到表被序列化 在后续请求中 当我从会话状态检索表时 事件处理程序不
  • 无法将 User32.dll 导入 Visual Studio

    I tried To add 用户32 dll from 参考管理器 并将其导入自Windows System32 user32 dll I got 错误信息 无法添加对 C Windows System32 user32 dll 的引用
  • 通过模板参数向类添加方法

    我希望在类中拥有一个模板参数特定函数 取消启用enable if 它的名称保持不变 参数类型有所不同 尽管这应该不相关 因为只有一个被初始化 enum class MyCases CASE1 CASE2 template
  • std::function 中参数的自动动态转换

    我们有多态类 A 和 B 例如 struct A virtual A struct B final public A void f std cout lt lt f lt lt std endl 我想分配一个变量std function
  • 更改 ASP.NET 控件的访问修饰符

    如果我像这样将控件放入 aspx 文件中
  • 使用日期时间作为文件名并随后解析文件名?

    我正在将文件写入硬盘 文件名是这样构建的 String Format 0 yyyy MM dd hh mm ss txt DateTime Now 例如 文件名是 2010 09 20 09 47 04 txt 现在我想在下拉列表中显示这些
  • 检查SQL Server数据库表中是否存在表或列

    在 SQL Server 数据库中创建列或表之前 我想检查所需的表和 或列是否存在 我已经四处搜寻 到目前为止发现了两种方法 我不想使用存储过程 通过使用SqlCommand ExecuteScalar 方法并捕获异常来确定表 列是否存在
  • 按下按钮时更改几何绘图画笔的颜色

    我创建了一个按钮模板 有一个图像和一个标签 图像的来源位于 ResourceDictionary Pictures 中 图片的来源是具有白色画笔颜色的 DrawingImage
  • Lambda 通过引用捕获右值引用

    下面的代码标准正确吗 godbolt https godbolt org z VE0NWz IE by ref 捕获表示临时的转发引用 并从函数返回结果 lambda 按值 在同一个表达式中 当然 存储 lambda 供以后使用会使其包含悬
  • OpenMP while 循环中的手动同步

    我最近开始使用 OpenMP 为大学的一个项目做一些 研究 我有一个矩形且均匀分布的网格 在该网格上我使用迭代方案求解偏微分方程 因此 我基本上有两个 for 循环 网格的 x 方向和 y 方向各一个 并由 while 循环包裹以进行迭代
  • xaml.cs 文件上的 InitializeComponent() 出现错误

    有时我会收到一个红色错误 内容如下 InitializeComponent 在当前上下文中不存在 以及我的其他变量 xaml受约束的x Name The x ClassXaml 文件中的名称空间和类名确实对应于我的xaml cs file
  • 创建 MSI 的最佳工具[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是设置项目创建的新手 现在我正在使用 Visual Studio 2008 为我的项目创建安装文件 msi 我对在安装向导中创建自己的自
  • 为什么 Windows 只允许一个应用程序访问网络摄像头? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我一直在尝试用 C 制作一个示例网络摄像头应用程序 我发现该应用程序无法同时运行 Skype 或 Oovoo 或任何其他应用程序运行 反之亦然 为什么
  • 用 C# 解析和查询 SOAP

    我正在尝试解析一个大量命名空间的 SOAP 消息 源也可以在here http tinyurl com n3av6k
  • ASP.NET 中的 ThreadStaticAttribute

    我有一个需要存储的组件static每个线程的值 它是一个通用组件 可以在许多场景中使用 而不仅仅是在 ASP NET 中 我想用 ThreadStatic 属性来实现我的目标 假设它在 ASP NET 场景中也能正常工作 因为我假设每个请求

随机推荐

  • 如何获取 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
  • 安全存储密码的最佳方法

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