你知道吗?图形验证码或许导致服务器溃散

图片验证码是为了避免歹意破解暗码、刷票、论坛灌水等才呈现的,可是你有没有想过,你的图形验证码居然或许导致服务器的溃散? 那他是怎么导致的呢?请听我婉婉道来。 先看看各大渠道对待此缝隙...

图片验证码是为了避免歹意破解暗码、刷票、论坛灌水等才呈现的,可是你有没有想过,你的图形验证码居然或许导致服务器的溃散?
那他是怎么导致的呢?请听我婉婉道来。
先看看各大渠道对待此缝隙的情绪:




运用进程
这儿以phpcms为例,首要需求找一个图形验证码。

将图片拖动到浏览器中将得到该图形验证码的链接:

将链接拖出来咱们剖析一下:
http://127.0.0.1/phpcms/api.php?op=checkcode&code_len=4&font_size=20&width=130&height=50&font_color=&background=
code_len=4是验证码的字符的个数
font_size=20是验证码的巨细
width=130是验证码的宽
height=50是验证码的高
假如将参数font_size、width、height均设置为1000将会呈现什么情况呢?

能够发现验证码的形状现已改动,证明这个参数是会跟着咱们的更改而更改的,并且在改成1000时,整个页面的加载速度显着变慢,咱们请想,假如都改为10000乃至更高会发作什么事情? 服务器会不会一直在处理咱们所恳求的图片?
此刻咱们上神器burp来查验一下
当设置为1000时:

当设置为10000时:

处理所用的时刻显着增加,咱们再看看在建议这个恳求时CPU有什么反响:

CPU有一个显着的峰值,那当咱们运用python去不断进行恳求的时分又会发作什么?这个是正常情况下的CPU占用率:

当咱们发动python程序的时分CPU的占用率:

可见,咱们恳求的验证码对服务器产生了严重的影响。
代码剖析
依据恳求包咱们跟进到 apicheckcode.php:

在第12行和第17行能够看到,只是将验证码的长宽经过get方法承受,没有任何其他的过滤,在第13行和第18行也只是只对最小值进行了约束,并没有对最大值进行约束,所以就造成了这个验证码的缝隙。
总结一下这个缝隙的运用点:
1.图片长宽等可控
2.后端没有对图片的最大巨细进行约束
解决方案
1.对承受的参数进行最大值的操控,或许固定值处理
2.运用固定巨细的验证码
 

  • 发表于 2021-04-08 12:34
  • 阅读 ( 211 )
  • 分类:互联网

0 条评论

请先 登录 后评论
六魔克布拉
六魔克布拉

565 篇文章

你可能感兴趣的文章

相关问题