网站用的是 Django 。
http://198.55.123.196/
主美国服务器要目的是限制软件的用户必须在登录的状态下运行被保护的功能,所以只要能够绕过登录运行被保护的功能就证明这个系统依然有漏洞。
客户端是 C++写的,界面库是轮子哥的 GacLib 。
验证程序注册还要手机号?
是不需要的,这个手机号随便填就行,验证码直接 alert 出来的。
你这 diango 是用的模板还是自己撸的
csrfmiddlewaretoken
不失效吗?可以拿来重复使用,就失去验证码的意义了。
Token 直接传给客户端 == 没有验证码
看了下载文件名,不会还上了 vmp 吧?
vmp 干掉 80%的用户
防破解本质就是要理解一点:不存在不能被破解的方法,只能是往复杂和恶心人的方向努力。但是切忌造轮子,不然你设计的精妙算法可能就是系统薄弱环节。
已经是诈骗页面了
完整的程序到了人家手里,那搓圆还是捏扁就都的随人家的意思了。最简单粗暴也最有效的破解方法就是反汇编找到关键点,直接修改字节码跳过你的验证逻辑。百试不爽。
逻辑都在服务端处理就行了,客户端只做显示和计算
是这样的,我这次是为了不收集大家手机号,才临时改成接口返回验证码本身,实际上 alert 出来的应该是上层接口返回的“发送成功”、“发送失败”等信息。
如果说的是 csrftoken 的话,这个东西我是用的 Django 自带的,应该每次刷新都是会变的。
感谢,我觉得也是。所以尽量没有多造轮子,只是把一些我觉得不太好的轮子以我觉得不错的逻辑重新写了一遍。
理论上讲确实是这样的,实际上这个程序用到的所有密钥(除了服务器私钥)我都是存在客户端里的,但是目前还没有人(也可能是没有足够的动力)找出这些密钥。
大后台用的还是 Django 模板,因为本身 Django 的那个大后台做得就很精致很完善。用户后台什么的那些都是自己撸的。
确实上了 VMP,但是听说现在 VMP 带壳破解(不脱壳)很容易。
VMP 破解很简单的,ESP 定律
你这个加密传输能防重放攻击吗?拦截一次成功的通讯,然后自建虚拟服务器重放这个通讯,是否可以绕过验证?
话说,如果重要流程没有插桩,核心代码没有上云。仅仅只是验证上云没什么用途。
重放攻击是通过加了时间戳的签名去防的,但用于生成签名的密钥依然存放在本地。我是实在不知道客户端有什么安全的地方可以存放密钥,或者说可能客户端本身由于是受对方控制的所以根本无法信任?
时间戳不靠谱,上强随机数来签名吧。客户端主动上传,数据带强随机数并签名,服务器返回时,必须带上客户端传的强随机数+服务器自己的强随机数并签名。
其实最简单的方式就是核心代码上云,有些重要数据必须是在云上处理后再下发的,而且这个数据不应该是固定的数据。这样就不怕对方搞个虚拟服务器劫持通讯了。
强随机数如果只靠接口参数传送的话,应该实际上还是无法避免重放攻击的吧。我觉得如果这样做的话,应该是使用客户端和服务器端都知道的一个算法去生成才行,就是跟 2FA 验证码一样的思路。但是这样的话算法又无法避免放在客户端,可以被逆了……
客户端的加密终将会被 hack,你唯一能做的是警告客户如果乱搞就封号
防的是对客户端的重放攻击。如果攻击方想要在不爆破程序的前提下解决这个,就要靠重放服务器验证通过的结果指令。强随机数能保证这样的攻击失效。
至于爆破程序这样的攻击方式...没辙,真没辙。
关于“PHP 托管空间”的问题,可以了解一下 Serverless,其实跟以前的 PHP 空间有许多相似之处。
不同 Serverless 服务商支持的语言不同,不过个人调查下来大多数都会支持 Node.js ,所以个人是建议用 Node.js 来写,这样自建或者用 Serverless 都可以。
目前能免费白嫖的 Serverless 平台大概有 Vercel, Netlify 和 Heroku,都支持 Node.js ,其中 Heroku 支持 Python 。不过需要注意的是,这类免费服务一般都不带数据库功能,可以考虑配合 Google Firebase 的数据库。
我没了解过现在还有没有什么免费的 PHP 空间,不过就算有,个人也不推荐花时间学习 PHP 了,感觉语言本身的 API 设计得很奇怪,以及不喜欢感觉传统 CGI 的执行模式。
感谢!看来现在 JS 正在取代以前 PHP (最好的语言)的位置。有空还是要多学一学这种东西哈。