最近整理资料的时候,发现exif信息被修改了。
我一直以为只有我一个人的文件被改变了。直到今天看到其他同学的数据被改了,我才意识到这么倒霉的不止我一个,于是赶紧去群里询问大家的情况。原来不是我一个人,大家都遇到过这个问题。
我们先来看看改变后的文件格式:
这是我自己修改的文件格式。
这是其他同学修改的文件格式。
可以看到这些文件的名称和大小都不同,而且很多同学的数据库名称也被改成了自己的名字。
那么问题来了,为什么别人可以改变我的东西呢?难道他们不知道这是违法的吗?事实上,事实并非如此。这实际上是利用了系统的一个默认功能——自动生成临时表空间。
什么是自动生成的临时表空间?这个函数的由来就是这个:
因为我们的系统默认有一个临时表空间的设置,如果用户设置了这个功能,那么在程序运行时,用户数据库中的所有数据都会被保存到临时表中。
比如我现在有一个名为test的数据库,里面有10万条记录,但是我在使用的时候只使用了1万条记录。如果我需要另外添加50,000条记录怎么办?这时候我可以直接通过这个函数添加一条新的数据,然后把这条新数据的值放到新添加的记录下面。
也就是说,只要用户不手动删除或移动任何一条数据,这张表的容量就是永久的,永远不会改变。当用户想要修改某条数据时,只需要相应改变表的值即可。
所以这是一个非常危险的功能。因为一旦外人知道了你的密码,他就可以利用这个功能来更改你的所有东西。
好在很多同学已经意识到了这一点,所以在小组讨论中提出了这个问题。
为了验证是否真的存在这样的漏洞,我也在网上查了资料,发现2019年就有人发现了这个问题()。
从网上的介绍来看,如果想要实现这个操作,需要用到一个叫做“AutomationTabs”的工具。该工具可以将整个系统的配置项变成其子集,从而自动创建、更新和删除临时表。
它的另一个更重要的特点是它可以控制所有的配置项。也就是说,你可以任意定义哪些配置项可以添加,哪些配置项不能添加。
对于一些比较复杂的逻辑,可能需要其他辅助工具来完成这个操作。但不管怎么样,这也算是给程序员们敲响了警钟吧!