进制惹的祸:10进制数字属于合法的16进制

2020-12-28 11:01:04 浏览数 (1)

问题背景:

设置如下鉴权配置信息,从配置上可以看到时间格式是十六进制unix时间戳,但是请求时如果时间格式是十进制依然可以正常访问:

十进制鉴权信息: http://image-1253792666.file.myzijiebao.com/123/456/yuanyang.jpg?sign=7607d5a99423dc36f7e3f35b5f013eda&t=1608873664

十六进制鉴权信息:

http://image-1253792666.file.myzijiebao.com/123/456/yuanyang.jpg?sign=29b1f8b3dd36526af0b2d8e948849f35&t=5fe578dc

综上,问题疑问:

1、十六进制鉴权,为什么十进制也可以正常访问?

2、十进制鉴权已经过期,为什么还是可以正常访问?


问题1,看了标题即可明白。

十进制数字1608873664,也是合法的十六进制,所以这样的鉴权信息也是可以正常访问的。

问题2,在问题1的基础上,可以进行转换,把时间戳1608873664看作十六进制,转换为十进制是94632359524,对应unix时间戳转换为普通时间是4968-10-12 06:32:04,那么意味着这个鉴权信息要到4968年才会过期,在这之前是一直可以访问的:

16进制转换10进制16进制转换10进制
unix时间戳转换unix时间戳转换

综上就是这里问题的答案和结论,大家可以评论看下这种请求从产品侧是要拒绝访问还是允许访问,这边会收集意见反馈产品侧进行评估采纳。

cdn

0 人点赞