Wordpress下的全站加密

全站加密的问题

一直以来,都想解决壮壮站点的全站加密,注意是全站加密,而不是用wp自带的单独加密。可是这么一个小小的问题,在我不会写代码的情况下,自然也变得麻烦起来。

后来找到了通过nginx的加密方式,在进站的时候要输入用户名和密码,这一定程度上解决了这个问题。但是存在两个遗憾:1)要输入用户名和密码,界面太丑。2)七牛无法回源读取文件。

step 1

修改WordPress主题,添加加密功能
用文本编辑器打开你的主题目录下的header.php,在第一行添加以下代码:

<?php
    if (!isset($_SESSION)) {
          session_start();
     }
     if( isset($_SESSION['authenticated']) )
     {
        if($_SESSION['authenticated'] == 'yes')
        {
            $authenticated = 'yes';
        }
         else
         {
             $authenticated = 'no';
        }
    }
    else
    {
        $authenticated = 'no';
    }
    if($authenticated != 'yes')
    {
         // 将 www.ludou.org 改成你的网站首页地址
         header("Location: https://www.ludou.org/login.php");
        exit();
    }
?>

step2

接着下载 login.php ,下载后用文本编辑器打开 login.php ,根据提示更改网站URL和密码,最后用UTF8编码保存并上传到你的网站根目录下。好了,现在你的博客就已经被加密了,初次访问必须输入密码。

login-php (点击下载)

此外,还有其他两种方法也可以解决,根据需要选择。具体看这里:

https://www.ludou.org/password-protecting-your-wordpress-blog.html


补充一个小问题:上述存在一个小不足,就是登陆后不会返回原始URL,而是会定位到主页。我加了一下两句代码:
1.在主题编辑器中加入以下一行:

$_SESSION["c_uri"]=$_SERVER["REQUEST_URI"];

2.在login.php中修改一下:

$url = "https://imgki.com".$_SESSION["c_uri"];

上面的其实很简单,就是在登录的时候通过记录REQUEST_URI的值到session中,在输入正确密码的返回地址时在加上这个$_SESSION["c_uri"]


2017.9.8补充一下:后来陆续还遇到了几个问题,也修正了几个地方。
1.期间出现了一个错误,让人很抓狂,其实就是一个细心的问题,导致在input的数据不能提交到到$_POST变量,出现了一个死循环。写代码这个东西真是能锻炼人的耐心和细心。

2.对登录界面进行了在美化,原来等登录界面实在太丑啦,成果看下图。
下载-4.png


后期的工作:据说这个还有可能出现XSS攻击?不知道需不需要在捯饬一下。

Last modification:March 4th, 2019 at 07:02 pm

Leave a Comment