我的天!8年开发,连登陆接口都写这么烂

从CTF到实战:Frida Hook无导出SO函数的3种特殊姿势 本文深入探讨了在移动安全逆向工程中,如何利用Frida Hook无导出SO函数的三种高级技巧:字符串引用定位法、调用栈回溯法和内存特征码扫描。针对安卓So层加固和混淆场景,文章结合CTF赛题与实战案例,详细解析了每种方法的原理、实现步骤与适用场景,为安全研究人员提供了从理论到实践的完整解决方案。 阅读详情

if captcha is None:

return error(‘需要验证码’)

check_captcha(captcha)

success = do_login(username, password)

if not success:

set_redis(fail_username, fail_count + 1)

复制代码

伪代码未考虑并发,实际开发可以考虑加锁。

这样确实可以过滤掉一些非法的攻击,但是以目前的OCR技术来说的话,普通的图片验证码真的很难做到有效的防止机器人(我们就在这个上面吃过大亏)。当然,我们也可以花钱购买类似于三方公司提供的滑动验证等验证方案,但是也并不是100%的安全,一样可以被破解(惨痛教训)。

登录限制

那这时候又有同学说了,那我可以直接限制非正常用户的登录操作,当它密码错误达到一定次数时,直接拒绝用户的登录,隔一段时间再恢复。比如我们设置某个账号在登录时错误次数达到10次时,则5分钟内拒绝该账号的所有登录操作。

伪代码如下:

fail_count = get_from_redis(fail_username)

locked = get_from_redis(lock_username)

if locked:

return error(‘拒绝登录’)

if fail_count >= 3:

if captcha is None:

return error(‘需要验证码’)

check_captcha(captcha)

success = do_login(username, password)

if not success:

set_redis(fail_username, fail_count + 1)

if fail_count + 1 >= 10:

# 失败超过10次,设置锁定标记

set_redis(lock_username, true, 300s)

umm,这样确实可以解决用户密码被爆破的问题。但是,这样会带来另一个风险:攻击者虽然不能获取到网站的用户信息,但是它可以让我们网站所有的用户都无法登录!攻击者只需要无限循环遍历所有的用户名(即使没有,随机也行)进行登录,那么这些用户会永远处于锁定状态,导致正常的用户无法登录网站!

IP限制

那既然直接针对用户名不行的话,我们可以针对IP来处理,直接把攻击者的IP封了不就万事大吉了嘛。我们可以设定某个IP下调用登录接口错误次数达到一定时,则禁止该IP进行登录操作。

伪代码如下:

ip = request[‘IP’]

fail_count = get_from_redis(fail_ip)

if fail_count > 10:

return error(‘拒绝登录’)

# 其它逻辑

# do something()

success = do_login(username, password)

if not success:

set_redis(fail_ip, true, 300s)

这样也可以一定程度上解决问题,事实上有很多的限流操作都是针对IP进行的,比如niginx的限流模块就可以限制一个IP在单位时间内的访问次数。但是这里还是存在问题:

  • 比如现在很多学校、公司都是使用同一个出口IP,如果直接按IP限制,可能会误杀其它正常的用户

  • 现在这么多VPN,攻击者完全可以在IP被封后切换VPN来攻击

手机验证

那难道就没有一个比较好的方式来防范吗? 当然有。 我们可以看到近些年来,几乎所有的应用都会让用户绑定手机,一个是国家的实名制政策要求,第二个是手机基本上和身份证一样,基本上可以代表一个人的身份标识了。所以很多安全操作都是基于手机验证来进行的,登录也可以。

  1. 当用户输入密码次数大于3次时,要求用户输入验证码(最好使用滑动验证)

  2. 当用户输入密码次数大于10次时,弹出手机验证,需要用户使用手机验证码和密码双重认证进行登录

手机验证码防刷就是另一个问题了,这里不展开,以后再有时间再聊聊我们在验证码防刷方面做了哪些工作。

伪代码如下:

fail_count = get_from_redis(fail_username)

if fail_count > 3:

if captcha is None:

return error(‘需要验证码’)

check_captcha(captcha)

if fail_count > 10:

# 大于10次,使用验证码和密码登录

if dynamic_code is None:

return error(‘请输入手机验证码’)

if not validate_dynamic_code(username, dynamic_code):

delete_dynamic_code(username)

return error(‘手机验证码错误’)

success = do_login(username, password, dynamic_code)

if not success:

set_redis(fail_username, fail_count + 1)

我们结合了上面说的几种方式的同时,加上了手机验证码的验证模式,基本上可以阻止相当多的一部分恶意攻击者。但是没有系统是绝对安全的,我们只能够尽可能的增加攻击者的攻击成本。大家可以根据自己网站的实际情况来选择合适的策略。

中间人攻击?

什么是中间人攻击

***中间人攻击(man-in-the-middle attack, abbreviated to MITM)***,简单一点来说就是,A和B在通讯过程中,攻击者通过嗅探、拦截等方式获取或修改A和B的通讯内容。

举个栗子:小白给小黄发快递,途中要经过快递点A,小黑就躲在快递点A,或者干脆自己开一个快递点B来冒充快递点A。然后偷偷的拆了小白给小黄的快递,看看里面有啥东西。甚至可以把小白的快递给留下来,自己再打包一个一毛一样的箱子发给小黄。

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

最后

针对以上面试题,小编已经把面试题+答案整理好了

最新大厂必问微服务面试题汇总:SpringCloud、Boot、Dubbo

最新大厂必问微服务面试题汇总:SpringCloud、Boot、Dubbo

最新大厂必问微服务面试题汇总:SpringCloud、Boot、Dubbo

面试专题

image

除了以上面试题+答案,小编同时还整理了微服务相关的实战文档也可以分享给大家学习

image

image

image

…(img-mvLze1tw-1710422853917)]

面试专题

[外链图片转存中…(img-UXs9xGg3-1710422853918)]

除了以上面试题+答案,小编同时还整理了微服务相关的实战文档也可以分享给大家学习

[外链图片转存中…(img-ZVcWMd5g-1710422853918)]

[外链图片转存中…(img-TiRCtIU6-1710422853918)]

[外链图片转存中…(img-VrFSE8iv-1710422853919)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

EMC工程师职业发展:从测试整改到系统设计的进阶之路 电磁兼容(EMC)是确保电子设备在复杂电磁环境中可靠工作的关键技术,其核心在于控制电磁干扰(EMI)并提升抗扰度。其基本原理涉及电磁场理论、噪声耦合路径与滤波屏蔽技术。对于电子产品而言,EMC设计直接关系到能否通过CE、FCC等强制性认证,是产品上市和市场竞争力的关键。在工程实践中,EMC工程师需要从电路设计、PCB布局、元器件选型等源头入手,将EMC要求融入产品开发全流程,实现从后期“整改”到前期“设计预防”的价值跃迁。本文聚焦EMC工程师的核心能力体系构建与职业发展路径,深入探讨了如何从掌握标准测试、电 阅读详情

相关推荐

Global Mapper与ArcGIS双剑合璧:自动化与半自动矢量化提取地物轮廓实战

本文详细介绍了如何结合Global Mapper的自动化批量提取与ArcGIS的半自动精细修整功能,高效完成地物轮廓矢量化工作。通过实战案例,阐述了利用Global Mapper快速抓取初步轮廓,再借助ArcGIS的ArcScan等工具进行精细化编辑和优化的完整工作流,有效提升地理信息数据处理效率。

weixin_29284657的博客 119

我的天! 8年开发,连登陆接口都写这么烂...

点击上方蓝色“java大数据修炼之道”,选择“设为星标”每晚九点: 技术干货 ???? 必定奉上 哈喽,各位新来的小伙伴们,大家好!由于公众号做了改版,为了保证公众号的资源能准时推送到...

hello world! 219

科研作图不发愁:手把手教你用PyMOL给蛋白-DNA互作图‘美颜’(附完整配色与标注方案)

本文详细介绍了如何使用PyMOL对蛋白-DNA互作结构图进行专业美化,包括从PDB文件加载、结构展示与标注、互作位点突出显示到高质量渲染输出的完整流程。通过具体案例(PDB ID:8SSS)演示了锌指结构域区分、关键残基标注和互作距离测量等实用技巧,帮助科研人员制作可直接用于期刊投稿的高质量示意图。

weixin_42523792的博客 554

我的天!8年开发,连登陆接口都写这么烂...

点击上方好好学java,选择星标公众号 重磅资讯,干货,第一时间送达 今日推荐:分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!个人原创100W...

好好学java 255

emir分析RC corner如何选择

power analysis阶段 RC corner的选择

weixin_61954252的博客 3596

OpenCV计算机视觉实战(3)——计算机图像处理基础

本文全面介绍了计算机视觉和数字图像处理的基础知识。从最基本的像素概念入手,详细讲解了图像在计算机中的表示方式,包括RGB、CMYK等色彩空间的工作原理及其应用场景。还系统分析了常见图像和视频文件格式的特点,梳理了计算机图像处理技术的发展历程,并重点介绍了OpenCV这一强大的开源计算机视觉库的功能与应用领域。

qq_30167691的博客 1743

8年开发,连登陆接口都写这么烂

**中间人攻击(man-in-the-middleattack,abbreviatedtoMITM)***,简单一点来说就是,A和B在通讯过程中,攻击者通过嗅探、拦截等方式获取或修改A和B的通讯内容。举个栗子:小白给小黄发快递,途中要经过快递点A,小黑就躲在快递点A,或者干脆自己开一个快递点B来冒充快递点A。然后偷偷的拆了小白给小黄的快递,看看里面有啥东西。甚至可以把小白的快递给留下来,自己再打包一个一毛一样的箱子发给小黄。

2501_90338834的博客 905

STM32 使用IQmath实现SVPWM

文章目录SVPWMIQMATHIQmathLib测试部分程序附件 SVPWM SVPWM是空间矢量脉宽调制(Space Vector Pulse Width Modulation)的简称,通常由三相逆变器的六个功率开关管组成,经过特定的时序和换相所所产生的脉冲宽度调制波,最终输出的波形可能会十分接近理想的正弦波形。 具体如下图所示;左侧为复平面,即空间矢量,右侧为时域的正弦波形; 关于SVPWM原理的文章非常多,这里可以推荐一下网上一个非常不错的教程《SVPWM的原理及法则推导和控制算法详解第五修改版》,

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 2万+

8年开发,连登陆接口都写这么烂...

来源:juejin.im/post/6859214952704999438大家学写程序时,第一行代码都是hello world。但是当你开始学习WEB后台技术时,很多人的第一个功能就是写的...

HollisChuang's Blog 632

微信小程序视频内容服务类目审核不过?绕过审核的两种思路!

虽然不推荐绕过官方审核,但在实际项目中,总有一些特殊情况:比如,最近开发的小程序涉及视频播放,提交审核时,被官方要求补充“教育服务 - 在线视频课程”类目。但我们的内容只是车辆使用介绍,并非教育课程,无法提供相应资质。该怎么办?很多开发者发现,小程序开发不是最难的,审核才是最难的。 微信为了规避法律风险,要求某些功能必须提供资质。例如:然而,并不是所有公司都能轻松申请到这些资质,甚至有些资质根本不适用于我们的业务,导致审核卡住,无法上线。就像我遇到的这个问题,官方要求我们补充“在线视频课程”类目,但实际业务

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 3249

Python3实现基于ARIMA模型来预测茅台股票价格趋势

ARIMA(Autoregressive Integrated Moving Average)模型是一种广泛使用的时间序列分析方法,它可以用于对未来的数据进行预测。ARIMA模型由自回归模型(AR模型)、差分整合模型(I模型)和移动平均模型(MA模型)组成,因此也被称为ARIMA(p,d,q)模型。其中,p表示自回归阶数,d表示差分阶数,q表示移动平均阶数。具体来说,ARIMA模型可以通过以下步骤进行建模:数据预处理:对时间序列进行平稳性检验,如果不满足平稳性,则进行差分操作。

m0_64336780的博客 2万+
上一篇: 同事问我MySQL怎么递归查询,我懵逼了
下一篇: 缓存穿透及解决方案(干货篇),Java程序员必备
普通网友
博客等级 码龄5年 4697粉丝 610原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值