和黑客斗争的 6 天![通俗易懂]

和黑客斗争的 6 天![通俗易懂]互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找Sql注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都…

大家好,又见面了,我是你们的朋友全栈君。

和黑客斗争的 6 天![通俗易懂]

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。

有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都是各个黑客检测工具来扫描,当然更高级一点的入侵需要很多人工协助。

一般情况下,网站被黑客入侵都是因为开发人员平时没有安全意识导致的,厉害的黑客往往会对平台的业务和内部流程非常熟悉,很多漏洞是从逻辑上分析出来的。

当然了,所有的黑客攻击行为都是有目的,99% 都是因为其中隐藏着暴利。

比如2015-2017年,很多互联网金融公司遭遇黑客敲诈,最后都是打钱了事。

和黑客在线上斗争过很多年,积累了一些案例,互联网金融公司工作期间,分享过一系列黑客攻击的案例,查看案例文章可以在公号内回复:003

今天给大家分享的是,去年一家公司发生的事情。

1

一个客户反馈操作很慢引发的事件

第 1 天

2018年的某一天,客服接到个别用户反馈,公司某款 App 操作时某个界面响应很慢,客服将此问题反馈给了公司的相关技术人员。

技术人员接到这个反馈之后,在生产环境多次测试并没有复现这个问题,于是给客户反馈有可能是网络的问题,可以换个网络再试试。

第 2 天

客服接到更多用户反馈,手机操作某个功能时很慢,最长时间要等待超过 1 分钟。客服又将相关信息反馈到技术,并且将问题级别提高了一级。

技术这边将问题上升到技术经理,开始排查问题原因,技术经理通过大量测试发现,这个缓慢现象在测试 10 次会复现 1 次。

看来又是一个偶现的问题,偶现的 Bug 是最难处理的,技术经理带着研发人员在服务器调了一下前端业务日志,分析之后也没有找到具体的原因。

第 3 天

公司有一个核心代理商将此问题反馈到技术老总,老总安排技术总监来关注此问题。技术总监要求把访问路径的关键节点都打上日志,看看具体是哪部分操作慢了。

经过技术经理的排查,是在 App 操作某一个功能的时候出现偶发性的慢,但是这块的操作也有缓存作为支撑,缓存的使用率并不是很高。

既然问题是偶发并且后面的缓存使用率并不高,那么应该不是程序哪块出现 Bug 了,应该是其它方面的问题,遂要求排查是否是服务器问题。

先给大家画一下一张图,方便大家了解一下技术背景。

和黑客斗争的 6 天![通俗易懂]

前端用户使用手机操作某一个功能时,请求经过防火墙路由器分发到最前端的 Nginx,Nginx 又通过均衡负载分发到后面的五台业务服务器。

业务操作的时候需要调用一组数据,这些数据会根据业务规则缓存到背后的缓存服务器集群中,用来缓解后端数据库的压力。

第 4 天

经过和运维人员配合调查发现,在分发的这 5 台业务服务器中,其中有 1  台服务器的压力比较大,凡是请求分发到这台服务器的时候就会出现慢的情况。

因为线上的服务器已经用了很多年,怀疑是不是服务器配置老化导致的问题,随后将压力比较大的服务器进行下线,无缝切换到新的服务器上。

过了半个小时后继续观察,又发现另外的一台服务器也出现负载压力大的问题。后面变了很多方案,比如减少到 3 台服务器来支撑,或者增加到 9 台服务器来支撑。

总是切换半个小时到两个小时的时候,其中的 1-2 台服务器的压力会突然上来,一直保持比较高的访问量,经过这些测试排除是服务器的问题。

紧接着排除 Nginx 是不是分发的策略有问题,导致某个服务器分发的请求过多,试着变了几次 Nginx 的分发策略后,还是会复现出问题,排除 Ngingx 分发异常。

第 5 天

技术人员继续跟踪,负载压力比较高的服务器线程 Down 出来和正常的服务器对比,发现在负载压力比较大的服务器上某个线程的调用数量异常的高。

再继续跟踪这个线程,原来是某一个忘记密码的功能被频繁的调用,忘记密码应该是一个普通的接口,为什么会被这样高频率的调用呢?

然后再继续跟踪是哪些 IP 在频繁的调用这些接口,不跟踪不知道,一跟踪吓一跳,把调用最频繁的 Top 100 IP 列出来查了一下,发现都是国外的 IP。

什么 巴黎、孟买、菲律宾、泰国,几乎所有的外国的IP都有,但是作为一家国内的第三方支付公司,怎么可能会出现国外的 IP 呢?

大家都知道在手机上填忘记密码的时候,绝大部分平台都是使用手机号作为其中的一个条件,如果你没有在这家平台注册,那么就会反馈手机号不存在。

这是一个非常常见的功能,但是对于黑客来讲,这个功能够暴利了。

很多同行业的竞争者需要挖角其它公司客户,但是怎么知道这些平台的客户有哪些?

直接通过这个接口,暴力破解就可以了。

是不是很黄很暴力!

因为公司处理的业务都是国内业务,所以只要直接在 Nginx 写脚本,把所有来自国外的 IP 都给屏蔽,可以暂时解决被国外 IP 攻击的问题。

上线后果然消停了,服务器也不过载了,App 访问也正常了。

第 6 天

可能黑客过了一晚上也反应过来了,又开始使用国内的服务器代理 IP 高频调用此接口,既然黑客使用了国内的 IP 地址,肯定不能把国内 IP 都封了吧。

不过在 Nginx 之后还有一个前置服务器,在前置服务器中加一个非常简单的过滤器:设置一个 IP 地址在某个时间段内(可配置)只能访问此接口 5 次,即可解决此问题。

然后再以用户为维度加限制,一个用户在某个时间段内(可配置)只能访问此接口 5 次。

上面这些手段都上完之后,一切都安静了,再也没有出现过服务过载或者用户反馈操作反应慢的问题了。

但是如果黑客有足够多的国内 IP 呢,为了防止出现这样的问题,我们再接着对产品进行升级,来防止黑客的这种可能性。

我们都知道现在很多 APP 页面,为了方便用户操作在忘记密码的时候没有图形验证码,或者有图形验证码却比较简单可以机器破解。

所以需要升级新一代的智能验证措施,现在很多创业公司都可以提供这种服务,这样就从各个维度防止了黑客通过暴力手段获取客户信息。

2

总结

其实据我所知,很多互联网公司到现在仍然存在这种漏洞,很容易让黑客通过暴力破解就拿到用户注册的手机号,只要拿到了用户的手机号后面就可以采用各种营销策略。

这是目前很多公司,采用的一种竞争手段。

有的时候,产品的易用性和安全性其实是有冲突的,产品在设计的时候,其实就应该和技术多考虑风控的相关设计,不然在产品运营的后期容易出现问题。

一个大型互联网公司中风险点非常多,服务器风险点、业务风险点都需要做提前考虑,同时公司必须配备相应的安全人员,对公司网站做常规安全巡检。

监控公司所有的访问接口频次,定期把公司里面所有的 IP 访问情况做成图表进行分析,看哪些是正常的请求,哪些是异常的访问。

定期排查统计分析访问的所有请求,可以提前发现很多问题。

开发人员和黑客斗争其实是一个长期的工作,任何一个访问量比较大的公司都会遇到类似的问题,遇到问题不要惊慌,仔细排查每一个细节,最终肯定会找到问题的答案。

在我的职场经历中,和黑客有过非常多交手的经历,现在回过头来看,这些经历才是我提升最快的最好养分。

解决问题是程序员成长的第一动力,解决大问题是成为大牛的关键。程序员的一生,也就是不断解决问题的一生。

这样看来,我们要感谢职场上遇到的那些困难!

所有能爬过去的问题都成为了经历和谈资,只有那些越不过的 BUG 才能称之为问题。

声明:转载本公号原创文章,请于原文发布48小时后经授权转载,谢谢!

作者简介:纯洁的微笑,一个有故事的程序员(????详细了解)。曾在互联网金融,第三方支付公司工作,现为一名自由职业者,和你一起用技术的角度去看这个世界。我的微信号puresmilea,欢迎大家找我聊天,记录你我的故事。

 

< END >

最近又赶上跳槽的高峰期(招聘旺季),好多读者都问我要有没有最新面试题,找华为朋友整理一份内部资料《第6版:互联网大厂面试题》并分类 4 份 PDF,累计 926 页!

整个资料包,包括 Spring、Spring Boot/Cloud、Dubbo、JVM、集合、多线程、JPA、MyBatis、MySQL、大数据、Nginx、Git、Docker、GitHub、Servlet、JavaWeb、IDEA、Redis、算法、面试题等几乎覆盖了 Java 基础和阿里巴巴等大厂面试题等、等技术栈!

 

图片

据说已经有小伙伴通过这套资料,成功的入职了蚂蚁金服、字节跳动等大厂。

图片

而且,这些资料不是扫描版的,里面的文字都可以直接复制,非常便于我们学习:

图片

 

如果你想获得完整PDF可以通过以下方式获得

面试大全怎么获取:

1. 关注下方公众号

2. 在下方公众号后台回复 【555】 即可。

和黑客斗争的 6 天![通俗易懂]

?长按上方二维码 2 秒
回复「555」即可获取资料

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132250.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何关闭或启动mysql服务器_MySQL运行

    如何关闭或启动mysql服务器_MySQL运行方法一:通过命令行开启\关闭服务第一步点击开始菜单,找到cmd,以管理员身份运行。第二步在命令行里面输入“netstopmysql”,按回车键,就停止了mysql服务,如下图所示:第三步在命令行输入“netstartmysql”,接着按回车键,开启mysql服务,如下图所示:END方法二:通过电脑服务开启/关闭第一步最开始右键计算机,选择“管理”,如下图所示:第二步进去管理之后,选择服务和…

    2022年10月25日
  • Tomcat7目录介绍

    Tomcat7目录介绍Tomcat7目录介绍版本7.082:目录解析:1.bin:存放启动和关闭Tomcat的命令的路径bin目录:*startup.bat启动TomcatTomcat启动后当在游览器输入:hhttp://localhost:8080进去Tomcat的页面*shoutdown停止Tomcat2.conf:存放Tomcat的配置,所有的Tomcat的配置都在该路径下设置

    2022年7月18日
  • strip 命令的使用方法

    strip 命令的使用方法

    2021年12月9日
  • 2021-09-27 网安实验-取证分析-数字取证之foremost

    2021-09-27 网安实验-取证分析-数字取证之foremostForemost的使用关于foremostForemost是基于文件开始格式,文件结束标志和内部数据结构进行恢复文件的程序Foremost参数说明$foremost[-v|-V|-h|-T|-Q|-q|-a|-w-d][-t][-s][-k][-b][-c][-o][-i<file]-V-显示版权信息并退出-t-指定文件类型.(-tjpeg,pdf…)-d-打开间接块检测(针对UNIX文件系统)-i-指定输入文件(默认为标准输

    2022年10月24日
  • 查理德弗曼学习法

    查理德弗曼学习法费曼学习法的灵感源于诺贝尔物理奖获得者理查德·费曼(RichardFeynman),运用费曼技巧,你只需花上20分钟就能深入理解知识点,而且记忆深刻,难以遗忘。知识有两种类型,我们绝大多数人关注的都是错误的那类。第一类知识注重了解某个事物的名称。第二类知识注重了解某件事物。这可不是一回事儿。著名的诺贝尔物理学家理查德·费曼(RichardFeynman)能够理解这二者间的差别,这也是他成功最重要的原因之一。事实上,他创造了一种学习方法,确保他会比别人对事物了解的更透彻。费曼学习法可以简化为四个单词:C

    2022年6月14日
  • mysql如何查看用户及其权限「建议收藏」

    mysql如何查看用户及其权限「建议收藏」【1】查看mysql数据库中的所有用户SELECTDISTINCTCONCAT(‘User:”’,user,”’@”’,host,”’;’)ASqueryFROMmysql.user;【2】查看某个用户的权限showgrantsfor’nextcloud’@’%’;orselect*frommysql.userwhereuser=’r…

    2022年6月18日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号