Hexo博文加密思路總結

一、概述

      博客網站的運行有一段時間了,隨着博文數量的不斷增多、文章類型的不斷豐富,於是逐漸的對文章的隱私性有了要求。有些文章可能是自己的私人日記,不便於公開發表,但是有時候又需要對一些親密的人開放,因此,就需要對這些文章加密處理,然後向外提供密碼訪問。(歡迎在我的個人博客上訪問此篇文章程序員在旅途)
  Hexo博客屬於靜態網頁,我們不能夠在後端對用戶的請求做分析,判斷其是否有權限訪問某一文章,所以我們就要利用靜態網站的特徵來進行加密,對Hexo博文的加密訪問處理大致有兩種思路,其一是在前端進行加密,通過對具體的文章內容進行加密,用戶訪問的時候將加密後的文章傳送到前端,然後通過輸入的密碼進行解密文章,之後顯示在網頁上。其二是通過服務器提供的路徑訪問控制功能進行加密,利用該功能對特定網站路徑提供授權訪問,從而達到博文的加密訪問功能。

1) Hexo文章內容加密的方式有很多,一般是使用可逆的加密算法對文章內容進行加密解密,比如可以使用”AES加密算法”等,當然也可以自己編寫一些算法,總之保持加密後的字符串可逆即可。在前端,將字符串解密之後,添加相關的樣式就可以展示出來了。Hexo現在也有相關的插件,例如Hexo-Blog-Encrypt,hexo-encrypt。這些插件使用起來非常方便,安裝之後簡單的配置一下就可以使用。我的博客使用的是Hexo-Blog-Encrypt。
2) Hexo可以運行在衆多的服務器軟件上面,例如有:Nginx,Tomcat,Apache等。這些軟件基本上也都提供了路徑訪問控制的功能。本網站使用的是Nginx,因此就需要採用Nginx的授權訪問控制功能。

二、前端加密方式

      前端加密方式,就是對文章的內容進行加密解密,這個是實現的原理也很簡單,如果對前端比較瞭解的話,也可以自己寫一個這樣的加密插件。比較知名的加密插件有Hexo-Blog-Encrypt,hexo-encrypt等。經過比較,最終使用了Hexo-Blog-Encrypt插件,已開源,github地址爲 Hexo-Blog-Encrypt

2.1 安裝配置

      hexo安裝插件的方式有兩種,一種是在package.json 中寫入所需要的的插件名,然後npm install,另一種方式是直接使用 npm install –save <插件名>即可。 這裏選用後者進行安裝:

npm install –save hexo-blog-encrypt

然後在hexo全局配置文件_config.yml 中啓用該插件:

# Security
encrypt:
    enable: true

2.2 使用

    在需要加密的文章頭部添加所要求的字段,如:password,abstract,message等。

---
title: 文章加密
date: 2020-06-04 9:46:03
password: 程序員在旅途
abstract: 這是一篇加密博文,請輸入密碼後查看
message: 這裏需要密碼才能訪問。
wrong_pass_message: 抱歉, 這個密碼看着不太對, 請再試試.
---

2.3 注意點

1) 儘量使用最新版本的插件,因爲之前的版本對一些特性的支持可能不是很好。
2)如果你的博客使用了TOC,這就要進行一些額外的處理,不同的主題處理方式不一樣,這個網上有教程。
3)部分博客中, 解密後部分元素可能無法正常顯示或者表現, 這屬於已知問題. 目前的解決辦法是通過自行查閱自己的博客中的代碼, 瞭解到在 onload 事件發生時調用了哪些函數, 並將這些函數挑選後寫入到博客內容中。

三、服務器安裝方式

      我們這裏是使用了Nginx訪問控制的特性來實現的加密功能。Nginx的安裝配置可以參考我的博客Ubuntu下安裝Nginx服務器並進行優化。Nginx訪問控制有兩種方式,其一是基於基於用戶授權的訪問控制,其二是基於IP的訪問控制。實現網站的加密訪問,使用的是用戶授權方式,當客戶端想要訪問相應的網站或者目錄,要求用戶輸入用戶名和密碼才能訪問。(注意:Nginx的用戶授權訪問控制功能是由http_auth_basic_module 模塊提供的, 因此,Nginx服務器如果是自行編譯源碼安裝的,需要在編譯的時候加上該模塊,使用系統命令安裝的會默認加上該模塊。)
  過程主要有三步,1)安裝htpasswd插件,2)創建密碼文件,3)配置Nginx的加密目錄。
  1)插件安裝(我使用的是Ubuntu,其他的系統可能命令會有所差別):

sudo apt-get install apache2-utils

2)創建密碼文件:(文件存放路徑可自定義,但是要和服務器的配置路徑一致纔可以):

sudo htpasswd -c /usr/local/nginx/passwd username
New password: 
Re-type new password: 
Adding password for user username

3) 配置Nginx服務器:
配置實例
  配置完Nginx之後,重啓服務可以了。

四、總結

      以上兩種方式,都可以實現Hexo博文的加密,但是要注意的是,前端加密方式,是把加密後的博文返回給前端了,這是有被破解的可能性的,所以也不是很安全。服務器加密方式是使用了服務器的路徑訪問控制功能,相對來說比較安全,但是配置起來較爲複雜。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章