Gojira 哥斯拉Gojira 哥斯拉

哥斯拉爱好者的日常
生活相当无趣 我得找点乐子

解决typecho使用cdn缓存加速后泄露评论者个人信息的方法

2021年04月26日 星期一 农历二零二一年三月十五日 [牛年] 阳历辛丑年壬辰月甲辰日 金牛座

又是一天不停的雨,最近略显烦躁,做事无从下手,总是在惆怅未来。

终于把博客缓存评论者的问题搞定了。
这个问题在去年就发现了,但一直没能解决,也百度过好多次,但都没找到解决方法。
昨天一不小心看到一篇文章讲的就是这个问题,但他的标题与缓存评论者信息毫不相干,后来又连续找到两篇,他们的标题都有问题,所以导致搜不到。

解决方法,其实我早就知道,只是代码方面不会写,一句代码难倒英雄汉啊。
解决方法其实很简单,原理上来说就是将页面内的个人信息的默认值删掉,然后利用javascript从cookies中获取用户信息自动填回到评论信息框里,开干!

typecho使用cdn缓存加速后泄露评论者个人信息的解决方法如下:

很简单只需两步即可搞定。
1:打开这个文件:/usr/themes/xxx/comments.php,如下3条代码删除:

<?php $this->remember('author'); ?>
<?php $this->remember('mail'); ?>
<?php $this->remember('url'); ?>

请将以上出现的删除,即将value值置空,例如原来的是:

<input class="ipt" type="text" name="author" id="author" value="<?php $this->remember('author'); ?>" tabindex="2" placeholder="昵称(必填)" required>
<input class="ipt" type="text" name="mail" id="mail" value="<?php $this->remember('mail'); ?>" tabindex="3" placeholder="邮箱(必填)" required>
<input class="ipt" type="text" name="url" id="url" value="<?php $this->remember('url'); ?>" tabindex="4" placeholder="网址">

修改后:

<input class="ipt" type="text" name="author" id="author" value="" tabindex="2" placeholder="昵称(必填)" required>
<input class="ipt" type="text" name="mail" id="mail" value="" tabindex="3" placeholder="邮箱(必填)" required>
<input class="ipt" type="text" name="url" id="url" value="" tabindex="4" placeholder="网址">

2:继续在该文件的最后添加如下这段javascript代码:

<script>
<?php if(!$this->user->hasLogin()){ ?>
function getCookie(name){
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
    if(arr=document.cookie.match(reg))
        return unescape(decodeURI(arr[2]));
    else
        return null;
    }
function adduser(){   
    document.getElementById('author').value = getCookie('<?php echo md5($this->request->getUrlPrefix()); ?>__typecho_remember_author');
    document.getElementById('mail').value = getCookie('<?php echo md5($this->request->getUrlPrefix()); ?>__typecho_remember_mail');
    document.getElementById('url').value = getCookie('<?php echo md5($this->request->getUrlPrefix()); ?>__typecho_remember_url');
}
adduser();
<?php } ?>
</script>

上面这段js代码功能就是从cookies中获取用户信息并自动填回到评论信息框里,这样就解决了缓存评论者个人信息的问题了。

该方法适用于解决typecho使用了各种cdn缓存加速后直接显示前一位评论者的个人信息的问题,例如使用了腾讯cdn缓存、阿里云cdn、cloudflare缓存所导致的问题,也适用于使用里静态化插件,例如使用了TpCache缓存插件,也适用与将静态页面缓存到硬盘、或缓存到Redis、Memcache等场景。

去河边散步,随手拍的黄菖蒲图片
几天前放晴去河边散步,随手拍的这个花好像叫做黄菖蒲,与我认知中的菖蒲还是有比较打的差距的,没想到叶子这么嫩,以前以为是那种比较硬、比较锋利的叶子,之前听说菖蒲是挺水植物,想弄到过滤中。

2021.04.26今日股票亏盈情况

股票股数今涨幅%今盈亏额总涨幅%总盈亏金额
中国石油280000.00%0元-29.35%-48496元
东旭蓝天220000.00%0元-67.08%-116974元
泰禾集团260000.37%255元-59.71%-102492元
双鹭药业25000-2.30%-5986元-19.44%-61350元
嘉诚国际50004.61%6744元-26.09%-54005元
精锻科技130000.17%250元-23.54%-45292元
奥联电子15000-4.26%-8096元-5.42%-10410元
东旭蓝天2400000.00%0元16.51%14800元
罗牛山33000-0.59%-1630元3.97%10494元
三全食品6000-1.84%-2216元-32.86%-57828元
江西铜业60003.31%5148元-9.65%-17154元
紫金矿业120003.43%4437元-20.95%-35448元
罗普特4000-0.45%-477元-37.09%-62172元
恒逸石化50001.42%944元5.39%3450元
清仓盈亏:-102931元今盈亏:-627元总盈亏:-685808元

上证指数:3441.17点,涨跌-33.00点,涨幅-0.95%
今日上涨股票 1569 支,涨停 63 支
今日下跌股票 2575 支,跌停 28 支

这几天用于测试的模拟炒股那边亏的挺厉害,还好不是真金白银,算是庆幸。

好在真实盘这边波动不是很大,可能因为前期跌的已经够多了吧。

GOJIRA.NET原创文章未经允许不得转载! 当前页面:Gojira 哥斯拉 » 解决typecho使用cdn缓存加速后泄露评论者个人信息的方法

评论 9

  1. 你的站用了CDN的?怪不得之前评论名称老是显示上一个评论者的信息。

    老麦 2021.04.28 16:11:12 回复
    • 是的,现在显示的是你自己的个人信息吧?

      高不兴 2021.04.28 21:38:49 回复
      • 现在正常了,哈哈~所以啊,还得向你们这些大佬学习才行。解决问题的能力超强,我最近也在想办法解决评论提交慢的问题,请教了杨哥和林兄都没能解决,一是他们的方法超出我的理解范围,二是最近头脑有点晕,可能是失眠的后遗症。

        老麦 2021.04.28 21:45:32 回复
        • 真是惭愧,我这个简单问题都几个月了才解决。
          你的问题我看到你们评论里面的讨论了,比我的难。
          愿你无忧无愁睡眠好。

          高不兴 2021.04.28 21:51:04 回复
  2. 原来大佬也是用的typecho,我以为是zblog ~~

    夏目贵志 2021.04.27 19:29:00 回复
    • 是的,zblog好像更重一点,但没wp重。

      高不兴 2021.04.27 22:00:25 回复
  3. 这会应该可以了,我这里目前显示正常,评论一条看看。

    林羽凡 2021.04.27 11:36:01 回复
    • Cookie没问题了,不过有另一个问题是,如果提示评论频繁,返回上一层页面的时候,不是在回复区,而是在评论区,但也不是大问题。

      林羽凡 2021.04.27 11:39:27 回复
      • 哈哈哈,不会搞,问题不大就随它吧。

        高不兴 2021.04.27 15:42:42 回复