gpt4 book ai didi

c++ - 在输入错误的密码时锁定应用程序 (c/c++)

转载 作者:行者123 更新时间:2023-11-28 03:02:52 32 4
gpt4 key购买 nike

如果密码输入错误 3 次,我想阻止用户(5 分钟)访问特定的基于 Windows 的应用程序(C/C++)。我是否需要在系统级别维护日志文件,或者有什么方法可以维护计时器检查的某些参数(例如在 Cookies 中)?

最佳答案

正如 Jonathan 在评论中所说,如果代码(应用程序)仅在本地运行,则任何方案通常都非常容易绕过。如果至少有一些组件在受到合理保护的服务器上运行,您就有更好的机会。

对于“仅限本地的方案”,最简单的方法是:

int count = 0;
for(;;)
{
ask_password();
if (password == expected_password)
break;
count++;
if (count == 3)
{
Sleep(300000); // 5 minutes = 300000 ms.
count = 0;
}
}

当然,这只是需要用户关闭应用程序并重新启动它来绕过超时。为了避免这种“帮助”,您必须将“计数”存储在某种外部存储中(注册表项可能是最简单的),以及上次失败的时间戳。但是,除非您至少将您的应用程序拆分为一个以提升的权限运行的服务器进程(这也意味着“普通用户”无法安装该应用程序,只有具有管理员权限的人),用户还可以更改注册表绕过密码 sleep 很容易。

当然,一个简单但相对有效的防止“在第三次错误密码时休眠”的方法是在每次错误尝试时休眠几秒钟。这将使机器破解密码变得非常困难,因为现在每次尝试失败都需要两秒钟,而不是典型密码比较的“几乎瞬间”。

与有人试图侵入应用程序的风险相比,您显然必须问自己的是,做这一切有多大值(value)。你在保护什么,有人闯入的值(value)是什么?完全绕过密码有多难(例如对密码检查进行二进制修补)?密码/用户名是如何存储在系统上的(有足够技能的人可以从文件中解码密码吗?)

可能没有牢不可破的应用程序/密码系统这样的东西。这只是你创造它的难度与某人破坏它的值(value)的问题——如果值(value)很高并且你有合适的人致力于破坏它,那么它就可以被破坏,无论它受到多么好的保护。如果没有别的办法,对知道密码的人进行一些勒索、酷刑等可能会奏效……当然,大多数人不会那样做来找到你的 Facebook 或 SO 密码。但是,如果您在一家国际银行工作,则需要的不仅仅是用户名/密码来保护银行的全部内容不被窃取...

关于c++ - 在输入错误的密码时锁定应用程序 (c/c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20323198/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com