我想创建一个具有集中式安全数据库的winform应用程序。这个应用程序是可移植的,可以保存到任何PC上,只需运行.exe即可使用,因此该软件将有许多副本。但是,它需要用户登录,此登录帐户凭据将引用集中式安全数据库(集中式DB仅用于安全目的)。如果PC没有互联网连接,软件将无法识别凭据。因此,我想出了一个理想的方法是设置时间戳,如果到集中式数据库的最后一个连接是< 24h,则授予本地凭据(从集中式DB复制)登录。但我现在面临的问题是,时间戳和24H限制将不得不引用当前的系统时间在PC机(这可以很容易改变,以绕过时间戳)。解决办法是什么?在应用程序脱机时,还有其他方法可以控制用户吗?
发布于 2014-12-10 10:34:14
如果有人想盗版这个软件,这里有几个攻击矢量。他们可以修改二进制文件,或者用假的服务器替换远程服务器。通常,DotNET二进制文件可以很容易地分解或反编译回可读的源代码,免费参见http://www.jetbrains.com/decompiler/。更糟糕的是,代码也可以被编辑和重新编译,几乎同样容易。因此,如果您的源中有任何秘密或对称加密密钥,它们将被泄露。这只能通过使用第三方混淆器来稍微减轻一些,但这只是延迟了不可避免的事情。如果您已经有了一种方法来绕过代码中基于时间戳的身份验证,那么您实际上使其更容易被滥用。此外,可以使用db的本地副本来设置伪造的auth服务器。
https://security.stackexchange.com/questions/74676
复制相似问题