Total Pageviews

Saturday, 16 March 2013

如何使自己的WordPress足够牢固?

多重奏开始。


        一重奏,数据库安全
        首先是数据库备份,虽然现在大多数服务器空间都有同步及异步备份,但为了防止意外情况的发生,定期将数据库本分到本地仍然是最保险的一种做法。在WP下可以借助WordPress Database Backup插件(http://wordpress.org/extend/plugins/wp-db-backup/)轻松实现,用户可以选择 WordPress Database Backup提供的备份周期(包括每小时、每天、每星期、每月等周期)进行资料备份。 备份过后即使数据库被破坏,我们也可以用备份资料来还原数据库。在启用之前别忘了确认你的服务器支持mail()函数可以往外发送邮件。
        其次是修改默认SQL数据库前缀。如果你的WP还没有安装,那么在wp-config.php中修改语句”$table_prefix = ‘wp_’;”将”wp_”修改为你需要的前缀。如果已经安装过,首先备份数据库,然后到博客后台禁用全部插件,再到服务器后台的phpmyadmin中修改所有数据库表前缀。
        修改方法:根据WordPress的SQL数据库表名称逐条执行类似如下命令,将其中的”cfresh_”改为你需要的数据库表前缀:

    ALTER TABLE wp_commentmeta RENAME TO cfresh_commentmeta  
    ALTER TABLE wp_comments RENAME TO cfresh_comments  
    ALTER TABLE wp_links RENAME TO cfresh_links
    ……. 

        想省事的话可以用WP Security Scan插件来修改。
        数据库中表前缀修改完毕之后,返回wp-config.php文件,修改语句”$table_prefix = ‘wp_’;”,而后到WP后台恢复启用插件即可。
        如果出现后台不能登录的情况,请到数据库中执行以下命令,将其中的”cfresh_”改为你需要的数据库表前缀:

    UPDATE newprefix_options SET option_name = REPLACE(option_name,’wp_user_roles’,'cfresh_user_roles’);  
     UPDATE newprefix_usermeta SET meta_key = REPLACE(meta_key,’wp_’,'cfresh_’);  


        二重奏,管理员账号安全
        WP默认的管理员账号为admin,可以新建一个非admin为用户名的管理员账号而后删除admin账号,或者给admin账号重命名。同时使用高强度密码,这一点在WP中会有密码强度提示,参考即可。


        三重奏,设置文件wp-config.php安全
        1,修改自定义安全密钥(加密cookies),到https://api.wordpress.org/secret-key/1.1/生成随机安全密钥,替换默认密钥,防止入侵者通过cookie劫持访问后台管理界面。在wp-config.php中找到类似如下代码段,用打开页面中显示内容替换对应的8行”define”语句:

    /**#@+ 
     * 身份密匙设定。 
     * 
     * 您可以随意写一些字符 
     * 或者直接访问 {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org 私钥生成服务}, 
     * 任何修改都会导致 cookie 失效,所有用户必须重新登录。 
     * 
     * @since 2.6.0 
     */ 
    define(‘AUTH_KEY’,         ’put your unique phrase here’);  
    define(‘SECURE_AUTH_KEY’,  ’put your unique phrase here’);  
    define(‘LOGGED_IN_KEY’,    ’put your unique phrase here’);  
    define(‘NONCE_KEY’,        ’put your unique phrase here’);  
    define(‘AUTH_SALT’,        ’put your unique phrase here’);  
    define(‘SECURE_AUTH_SALT’, ’put your unique phrase here’);  
    define(‘LOGGED_IN_SALT’,   ’put your unique phrase here’);  
    define(‘NONCE_SALT’,       ’put your unique phrase here’); 

        2,移动wp-config.php,从2.6版本开始,WordPress支持将设置文件放在安装文件的上一级目录中,如果在当前WordPress目录下没有发现wp-config文件,WordPress会自动检查wp-config文件是否在其上层目录中。需要注意的是根据经验部分插件(如WP-T-WAP)需要在安装目录读取wp-config.php文件,如果移动后出现不能正常使用的情况请及时移回。
        3,锁定其他用户访问wp-config.php,可以在.htaccess文件中插入以下代码实现。
<files wp-config.php>
  Order deny,allow
  deny from all
</files>


        四重奏,WordPress版本安全
        首先自然是保持自己的程序版本最新,在后台多加关注新版本发布并加以操作即可。
        然后是隐藏WordPress版本信息,以免入侵者找出对应漏洞发起攻击。
        在WP2.5及更新版本中,在当前主题目录下的funtions.php中加入以下代码段实现:

    function wpbeginner_remove_version() {  
     return ”;  
    }  
    add_filter(‘the_generator’, ’wpbeginner_remove_version’); 


        五重奏,其他可以提高WP安全性的措施
        删除不用的WordPress主题和插件;
        为WordPress文件规定正确的文件许可权限;
        限制搜索引擎对网站内容的索引范围.