0x00


突然发现我的网站竟然比我还老。

0x01

右键时间条,审查元素,得元素id为uptime。


在主题主js中搜索元素id,发现问题由VOIDConfig.buildtime参数引起。

VOIDConfig为head中的一段js,buildtime梦回1970。

查阅主题head.php文件,找出buildtime来源是Utils类中的getBuildTime函数。

查阅主题Utils.php文件,可知取出buildtime的逻辑为找出最早一篇没有密码的公开文章的发布时间。

此处即出现bug:在typecho中,一份草稿虽未发布,但保持着后台中的设置方便修改。后台设置与数据库对应如下:


此草稿的情况满足sql操作中status=publish和password=null的条件,被当作已发布的文章取出了created时间戳,其数值为0,而时间戳0对应时间的即为文章开头的1970。

0x03

直接删除草稿治标不治本,这里我在php代码中增加一个where判断:


指定筛选文章的类型为post(已发布的文章,草稿为post_draft),问题解决。