繁体   English   中英

防止文件被编辑

[英]Prevent file from being edit

防止文本文件(例如xml)被用户编辑的最聪明的方法是什么? 我需要确保不能简单地编辑用于存储用户名以及桌面应用程序特权的文件。

也许我可以生成该文件的证书,然后桌面应用程序对此进行检查?

我在WinForms应用中使用C#。

您可以使用文件系统权限来阻止编辑。

您可以使用加密来增加编辑难度

您可以获取文件的哈希值以检测编辑。

我认为先加密文件,再解密。 尽管如果用户足够聪明,他们仍然可以读取文件的内容。 例如从内存中读取纯文本

最简单的方法可能是使用具有用户名和密码身份验证的数据库。

最聪明的方法是对其进行加密,以使数据对他们不可用。

但是,如果用户确实希望访问其计算机上的文件,则可以获取该文件。 您可以这样做,以使他们无法阅读任何有用的内容或进行有用的编辑,但是如果愿意,他们将能够编辑文件。

由于您的目标是将用户的权限直接存储在XML文件中,因此,除了防止用户编辑文件之外,您还需要一种安全级别。 即使您可以(假设)在操作系统级别对编辑文件施加一些限制,任何管理用户也可以只在另一台计算机上编辑文件,然后覆盖受保护的版本。

因此,您必须假设用户可以编辑文件。 您唯一的办法就是能够确定他们何时拥有,并忽略他们的编辑。

您建议的创建证书的方法听起来很正确。 您既可以计算整个文件的哈希值,也可以在每个用户的基础上计算哈希值(以您的上下文中最有意义的为准),在两种情况下都可以使用私钥或秘密密钥来确保某人编辑该文件不能只需重新计算哈希即可。

恕我直言,您不能保证没有人可以编辑它,但是您可以加密文件以保护信息。

您无法保证,因为任何人都可以使用例如磁盘启动来启动计算机并仅编辑文本文件。

如果必须将数据保留在XML文本文件中,则可以考虑在每次修改应用程序时对应用程序进行数字签名,并在读取文件时检查数字签名。

有关如何对XML文件 签名以及如何验证签名的更多详细信息。

但是我认为最好以不同格式保存这种数据-数据库,加密文件,应用程序属性...

我个人认为,在这种情况下,XML不是用于存储安全信息的适当格式。 与二进制格式相比,XML的全部要点是它是人类可读/可编辑的。 使用一种具有已知哈希值/ CRC的加密二进制格式,该格式可以告诉您是否需要总体安全性。

您可以使用加密技术,但要使用Windows内置的DPAPI,因为还必须安全地存储加密密钥,这又是另一个麻烦。

使用DPAPI的好处是它使用用户或计算机唯一的密钥,即使对于程序员也永远不会泄露! 但是,如果将文件移到另一个用户的配置文件或计算机上,将无法读取。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM