0

我的应用程序将用户交互存储在一个加密文件中,它会在Session. 会话就像离线考试,因此我们不仅存储答案,还存储鼠标点击、屏幕截图等。

会话必须保持 ATOMIC,因此我不断保存增量文件并在会话结束时将它们修补在一起。如果应用程序发现被篡改文件的痕迹,它会将会话标记为不合格。

我想要达到的目标:

  • 创建的增量文件只能由应用程序访问。换句话说,任何拥有提升权限的人都不应该能够修改或删除它们。
  • 应用程序的一种非 Windows 依赖方式,可确保在打包会话时没有人篡改增量文件。
  • 内存防篡改。换句话说,如果内存数据被强行修改了,我的应用程序应该了解它。这可能吗?

我曾考虑过独立存储、散列等,但希望得到其他做过此类事情的人的建议。

4

2 回答 2

1

尤其是在 .NET(和 Java)等托管环境中,在与完全控制其系统的用户在同一台​​机器上运行时,无法安全地执行此操作。尝试将需要安全的应用程序部分移动到中央机器(例如 Web 服务)。这样,没有人可以将调试工具附加到该逻辑或进行内存转储。这是保护您的应用程序的唯一方法。

于 2012-05-08T14:53:38.943 回答
0

您可以使用SecureString来存储敏感信息,但只能在内存中。并避免内存转储。

您可以加密文件以避免在文件系统中看到敏感信息。

您无法避免文件删除,您可以在应用程序的整个生命周期内锁定文件,但这不是防弹的。

于 2012-05-08T15:07:17.937 回答