如何保护代码中的敏感数据?

2024-03-16

我正在研究保护我的代码免遭反编译的方法。

这里有几个很好的线程描述了混淆和代码打包作为保护代码的可能方法。然而,它们都不是理想的,当使用字符串方法/属性名称时,混淆不适用于反射。许多人根本不建议使用混淆。

所以我目前决定不接受上述任何一项。However, 我有部分代码需要某种加密,例如,带有IP、登录名和密码的数据库连接字符串存储在代码内部,就像简单的那样const string,与电子邮件帐户数据相同。

在 ASP.NET 中,有一个选项可以将敏感数据移动到.config文件并对其进行加密,但这需要服务器密钥,即链接到一台计算机。我没有读太多相关内容,但我认为类似的东西也可用于桌面应用程序。但我需要这个来解决any安装该应用程序的计算机。

是否有方法对此类数据进行编码/保护,使其无法与反编译代码一起读取?


第一个建议是never直接将任何敏感内容存储在代码中。你可以always逆向工程,无论你多么巧妙地试图混淆它。

我读过一些内容,例如将密码分成几部分,将它们放在代码中的不同位置,并在最终使用它们之前通过一系列函数运行它们......尽管这使事情变得更困难,但您仍然可以始终监视应用程序使用调试器,最终您将能够检索秘密信息。

如果我正确地解释了您的场景,那么您所拥有的代码将部署在某些客户端的场所,并且您的代码连接到数据库(我认为数据库也在客户端的监督之下),连接到它需要密码。该密码对该客户端来说是已知的,因此尝试向客户端隐藏它是毫无用处的。你什么do想要的就是限制任何不应该知道该密码的人访问该密码。

通常,您可以通过将敏感信息放入文件夹中的单独文件中来实现此目的,该文件夹应具有非常严格的权限,只有应用程序和少数选定的人员有权访问。然后,应用程序将在运行时需要时访问该信息。

另外,加密单独的文件也是一个问题 - 如果你这样做,那么就会涉及到一个密钥,必须再次以某种方式保护它 - 无限递归正在发生:) 保护对文件的访问通常就足够了,但如果如果您确实需要尽可能安全,那么解决方案是对文件使用基于密码的加密。但这里的想法并不是将密码存储在系统上的另一个位置,而是作为带外信息(例如,在物理保管库中)并在启动应用程序时输入密码。这也有其问题:(重新)启动应用程序需要有人亲自在场,并且您仍然可以从运行应用程序的计算机的 RAM 中检索密码。但这可能是您在没有专用硬件的情况下可以做的最好的事情。

基于密码的加密的另一个好的替代方案是依赖特定于操作系统的“密码库”,例如 Windows 的“密码库”隔离存储 http://msdn.microsoft.com/en-us/library/3ak841sy.aspx,这是完全不加密和将密码保留在带外之间的一种权衡。

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

如何保护代码中的敏感数据? 的相关文章

随机推荐

  • PHP显示BLOB数据?

    如何使用 PHP 显示 BLOB 数据 我已将 BLOB 输入到数据库中 但如何检索它 任何例子都会很棒 我考虑投票结束这个重复项 但标题相当不错 并且浏览其他问题 我没有找到一般问题的完整答案 这类问题暴露了对 HTTP 基础知识缺乏了解
  • 如何让Bootstrap 3工具提示跟随鼠标?

    我的网站上有一个链接列表 这些链接在 Bootstrap 工具提示中显示图像 a title Item 1 a a title Item 2 a a title Item 3 a
  • 在静态库中包含第三方库(例如:AFNetworking)

    是否可以在静态库中包含第三方库 示例 AFNetworking 可以包含在静态库中吗 您的问题的直接答案是肯定的 您绝对可以包含任何第三方库 如果它们公开公共 API 一组供您参考的标头 对于 AFNetworking 他们通过提供 Coc
  • 即使对于已登录的用户,也会在页面加载时清除 Woocommerce 购物车

    如果此页面不是购物车或结账页面 我想在页面加载时清除购物车页面即使对于登录的用户和管理员 任何页面也会被清除 这段代码可以工作 但现在不行了 Clears WC Cart on Page Load Only when not on cart
  • PDO从数据库获取数据

    我最近开始使用 PDO 之前我只使用 MySQL 现在我正在尝试从数据库中获取所有数据 getUsers DBH gt prepare SELECT FROM users ORDER BY id ASC getUsers gt fetchA
  • C# 如何最大限度地提高特定代码段没有上下文切换的机会?

    我的应用程序中有一段对时间要求严格的代码 我将运行它的线程设置为最高优先级 这是我能做的最多的事情 是否有关于如何使该线程中运行的部分代码被中断尽可能少的次数 更少发生上下文切换 的建议 代码并不复杂 我用内联代码替换了所有方法调用 并且不
  • 在 Azure API 上托管 Flask(python) API

    团队 我一直在尝试在 Azure API 应用程序上托管 Flask API 但它不起作用 Azure API 应用程序正在运行 托管页面打开 Python 版本为 3 6 6 我无法托管简单的 hello world 项目 我收到的不同错
  • 在 C# SQLCLR 中更改静态只读变量是否安全?

    我在 C 6 0 NET 3 5 CLR 程序集中编写了一些代码 安全级别 external access 减少代码 public static readonly DataTable warnings table init warnings
  • 循环 Eclipse 代码模板中的字段

    您可以在代码模板中执行循环吗 例如我想打印类中的所有字段 有这样的模板吗 假设你正在谈论Java gt Editor gt Templates参考 可能已经过时 是here http help eclipse org help32 inde
  • 在 MySQL 中存储 html 的 100% 安全方法 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • PHP 同时使用客户端和服务器端验证,而不使用第 3 方代码

    编辑 感谢您的所有帮助 收到一封电子邮件 说我们不需要客户端 所以我放弃了这个想法 转而按时实际完成任务 在你问之前 是的 这是作业 不 我不是在寻找某人的完整代码 我是一个初学者 几乎没有 HTML PHP javascript 经验 但
  • 如何在android sqlite中显示blob数据的图像?

    我一直在尝试将 android sdcard 中的图像存储到 sqlite 数据库中 而且效果很好 图像作为 blob 存储到数据库中 这是我一直使用的粗略代码 Bitmap bitmap BitmapFactory decodeFile
  • 在 Fabric js 中缩放时保持描边宽度

    注 我已参考所以问题 https stackoverflow com questions 39548747 fabricjs how to scale object but keep the border stroke width fixe
  • 如何在 Phoenix 框架中有选择地禁用 CSRF 检查

    我正在尝试创建一个指向我的网站的 Facebook 页面选项卡 Facebook 向我网站的 url 发送 HTTP POST 请求 这里的问题是服务器有内置的 CSRF 检查 它返回以下错误 Plug CSRFProtection Inv
  • grails mongodb 连接被拒绝

    我的 grails 应用程序可以连接到本地 mongodb 并且工作正常 但是当我部署到 Cloud Foundry 时 尝试连接到 cf 上的 mongodb 时出现连接拒绝错误 我将 mongodb 服务绑定到我的应用程序 但它仍然无法
  • 使用Java中的过滤器验证用户名、密码(与数据库联系)

    下面是一段使用过滤器的 Java 代码 如果用户名和密码也正确 每次都会显示错误页面 请帮助我 我对这个概念不太了解 String sql select from reg where username user and pass pwd r
  • IE11 输入类型 = 数字

    我正在使用 Angular 4 3 我有一个带有输入类型号的输入字段 我试图限制用户输入任何字符 字母 但是 不完全支持输入类型数字 并且允许我在输入字段中输入 ABCDEFG 等字符 限制信件的最佳方法是什么
  • Android 服务正在运行,但在设置 -> 运行服务中未显示

    我的应用程序中有一项服务 其他一些应用程序也有 根据我的习惯 我可以在设置 gt 运行 服务中很好地看到 并杀死 服务 但是 不是我的 该服务本身是从 IntentService 扩展而来的 它通过 BroadcastReceiver 处理
  • shell脚本和CRON问题[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我为我们的本地开发服务器 运行 Ubuntu 服务器版本 9 10 编写了一个备份脚本 只是一个简单的脚本来 tar gzip 本
  • 如何保护代码中的敏感数据?

    我正在研究保护我的代码免遭反编译的方法 这里有几个很好的线程描述了混淆和代码打包作为保护代码的可能方法 然而 它们都不是理想的 当使用字符串方法 属性名称时 混淆不适用于反射 许多人根本不建议使用混淆 所以我目前决定不接受上述任何一项 Ho