»

如何安全地使用静态缓存插件+CDN服务,防止WordPress评论者信息泄露?

    WordPress网络安全  
浏览器网络安全客户申请状态CDN工作Apache防盗链cookies访客缓存插件网站镜像FAQweb.config爬虫又拍云CDN访问CDN的问题IIS网站优化wordpressWordPress插件建站windows主机

其实 “静态缓存插件+CDN服务”这个组合是很多人优化网页青睐的选择。但是这里必须考虑缓存静态化 和(或)CDN 服务对登录用户/管理员、以及评论者信息(用户名、邮箱和填写的URL地址)带来的影响:设置错误,有可能暴露给公众。

以前的几篇文章:

 

以下只是对上述文章的简要归纳和总结。本文的相关代码已在上述文章中给出。

 

WordPress用户/管理员 前台的评论输入框和Cookies信息处理

对于前台登录框的处理

对于使用 WordPress 的用户或管理员,如果登陆后台的页面和使用前台的页面在同一浏览器(同一浏览器同时不使用隐私模式或者同时使用隐私模式),那么前台页面的评论框会显示为用户或管理员已登录的默认状态,如下图所示:

user-yidenglu

 

本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利

这种情况导致使用静态缓存插件 和/或 CDN 服务的时候,把上述静态页面信息也都“分享”出去了,所以我们要把评论框中的三个输入框(昵称、电邮、网址)置空。

可以使用如下代码(代码1):

  1. // 让管理员在前台页面的评论框中信息置空
  2. function make_known_users_anonymous() {  
  3.     global $current_user;  
  4.     if(!is_admin() && isset($_GET['preview']) != 'true'){  
  5.     $current_user = array(  
  6.         'user_login' => '',  
  7.         'user_email' =>'',  
  8.         'user_level' => '',  
  9.         'user_firstname' => '',  
  10.         'user_lastname' => '',  
  11.         'display_name' => '',  
  12.         'ID' => '',  
  13.         'user_url' => '',  
  14.         );  
  15.     }  
  16.     return $current_user;  
  17. }  
  18. add_action( 'init', 'make_known_users_anonymous' );  

 

本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利

对于前台页面的Cookies信息

但是:上述代码实施后,HTTP Header 的 cookies 信息里仍可见 Name 类似于“wordpress_logged_in_bxxxxx726c6b7a9cf3cda9370be3ee91”( comment_author_{HASH}comment_author_email_{HASH} )这样的 session 和 Value 值,容易被外人看到用户名和邮箱地址。

 

对于WordPress评论者的评论输入框和Cookies信息处理

前台评论输入框的处理

代码2

  1. //让评论者评论输入框中信息置空息
  2. function ignore_existing_comment_cookies() {  
  3.     return array( 'comment_author' => '', 'comment_author_email' => '', 'comment_author_url' => '' );  
  4. }  
  5. add_filter( 'wp_get_current_commenter', 'ignore_existing_comment_cookies' );  

上述代码的作用是:评论后将三个填写的评论输入框(昵称、电邮、网址)置空。

 

本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2023. All Rights Reserved

评论后页面cookies信息

但是,评论后在 HTTP Header cookies 里仍能看到 comment_author_{HASH}comment_author_email_{HASH} 这样的 cookies 信息。只是评论输入框上没有而已。

下面一段代码才是终极大招:评论者评论之后,个人填写的三个信息(昵称、电邮、网址)无论在输入框还是在 HTTP Header cookies 里,渣都不剩了。所以,有下面的代码,就不用考虑上面的代码了。

本文禁止无授权转载 - 时光在路上 www.timezls.com 保留所有权利

代码3

  1. // 让评论者的 cookies 不起作用
  2. function no_comment_cookies() {  
  3.     if( !is_admin() )  
  4.         return -1;  
  5. }  
  6. add_filter( 'comment_cookie_lifetime', 'no_comment_cookies' );  

 

综上所述,当你使用静态缓存插件 和/或 CDN 服务时,代码1 和 代码3 的组合才是最终的选项。

而且,使用 CDN 服务后,你可以使用 JavaScript 代码重新设置前端的评论者 cookies 信息(以前文章写过,见开头文章列表)。

另外,需要注意的是,使用静态缓存插件 和/或 CDN服务时,刷新操作最好不要在 WordPress 用户/管理员 登录的浏览器页面中进行,可以使用隐私模式页面,或者如果使用隐私模式登录、那就改成正常模式的页面刷新,亦或使用其他浏览器刷新。

(毕)

时光在路上扫码阅读、分享
  • 版权声明:该文章由 时光在路上 发表,共 2145字。除非特别标注来源,否则为原创。详见《版权声明》部分。
  • 转载请注明:文章标题和文章链接 - 时光在路上 - 也可直接“复制本文链接” 或 使用右边二维码分享本文 →