今天做测试的时候遇到一个添加收获地址的时候发现收货地址的ID参数是可控的。一般叫ID参数的都为自增长的主键。
然后我就把ID参数值设置的特别大。返回结果也提示新增地址成功。(原图丢失了,下图以自己的数据库模仿一下。)
查看插入的数据,id并不是插入的多个99999,而是16777215 ,也就是2的24次方-1,可能是id字段的长度是24,当我们设置的ID参数值超过了16777215,数据库会自动将ID值设置为16777215。也就是能支持的最大的ID值。
然后不指定id参数插入数据的时候,会因为自增长、和超过id最大值时会自动设置为16777215的问题导致id值不唯一,导致插入数据失败。
这样就导致了普通用户再添加收货地址就再也添加不上了。
另外将插入的ID值为16777215的数据删掉之后,还是不能正常添加收获地址的,需要修改一下自增长的起始值才能正常添加。
将值删掉之后,再次添加数据,
添加成功了,但添加的ID参数值是最大的,所以下一次添加时,又会失败
先将最大的ID值数据删除,然后修改一下id的起始值。
alter TABLE qqadmin auto_increment =1;
然后再执行插入语句就正常了,
不知道各位大佬怎么看。