我有一个程序,在这个程序中有一些变量(用户名和“特权级别”)只有在用户登录时才会更改。有没有一种方法可以在程序运行时“保护”这些变量不被内存编辑等,但如果用户使用其他用户名登录,程序仍然可以更改它们。
我认为使用const或readonly都可以(尚未测试),但当用户重新登录时,是否仍有可能更改它们?
此外,有没有可能散列/加密程序中使用的字符串,以便用户无法通过搜索内存(即使用作弊引擎)找到它们?
发布于 2009-07-02 00:00:14
如果软件和用户凭据正在用户的计算机上运行,则不可能阻止用户更改值。
如果凭据和访问权限存储在远程服务器上,则可以使用该服务器,并让用户仅存储在任意时间段后过期的哈希令牌。使用该令牌作为查找,从服务器检索用户的配置文件信息。
您仍然会遇到问题,因为在客户端完成的任何操作都可能被操纵/破解。如果你把所有的逻辑都放在一个中央服务器上,你就可以更有把握地相信事情不会被破解,但是你的系统性能会受到影响。
您需要权衡中央服务器在安全性和性能方面的优缺点,并选择最适合您的平衡点。
发布于 2009-07-01 23:55:54
您不能修改const (ever)或readonly (在初始化之后)变量,因此这将不起作用。
最好的选择可能是将创建/初始化/设置这些变量的逻辑包装到登录过程中设置的干净方法和/或属性中。这将隔离这些代码,因此至少很容易理解。
至于加密字符串,您可以使用SecureString在运行时进行处理。在编译时,您可以对代码进行模糊处理(许多模糊处理程序支持字符串加密)。
发布于 2009-07-01 23:54:14
没有可靠的方法可以让你实现。通过加密这些东西,你可以让它变得更难,但绝不是不可能的。最坏的情况是,用户可以附加调试器并直接更改内存。
https://stackoverflow.com/questions/1071862
复制相似问题