本身寫的加密網頁,與百度網盤私密很類似,須要密碼才能訪問(原創)

 

題記:html

  1. 上就要招聘了,因此我打算放置簡歷在本身的網頁上,可是又不想給除了招聘的人,或者我指定的人外看,因此我須要對網頁頁面加密
  2. 我找了許多資料,查看了許多所謂的頁面加密,可是有60%左右都是網頁鎖,採用第三方插件,並且只能在某個遊覽器某個帳號下才能實現
  3. so,我只能本身研究解決了,這個時候有人給我百度網盤分享一個文件,是須要輸入密碼的,因而我發現這個就是我須要的,因而我開始研究百度網盤私密分享的原理

簡易分析百度網盤:node

一、先將全部cookie清空,帳號取消登陸ajax

 

 

二、打開chrome,輸入分享的連接,在跳轉連接以前,打開開發者選項,監控文件變化chrome

 

 

 

三、敲擊回車,發現url連接發生變化數據庫

 

 

 

四、url從 /s/1L... 變爲 /share/init?surl=Lrw...express

 

 

五、這時候看network中加載的文件變成302狀態後端

 

 

六、302表明重定向,意思是原來URL重定向至新的地址,也就是說,百度網盤服務器那邊判斷你這個分享連接沒有輸入過密碼,也就沒存儲cookie,因此本來訪問的頁面被重定向至新的密碼頁安全

 

七、這時候咱們輸入正確密碼,從新加載分享連接,發現返回正確的html,和200狀態服務器

 

 

八、而且會發現cookie中存入不少內容,而且頁面在訪問後端時,會自動攜帶cookie(最近一段時間我一直在用localstorage,因此忘了cookie,能夠自動攜帶)cookie

 

因此經過上分析,發現主要存於cookie內容中,實現的加密訪問

 

下面就是我寫的加密網頁原理(我使用的是nodejs,ejs模板,express),由於後端能夠用好多種去寫,這裏只寫思路,不寫具體代碼

前期準備工做,必須有個加密路徑的數據表

 

id path password plaintext random_code time
通常爲uuid 請求的路徑,根據本身喜愛寫,個人就是 /a.html sha256加密,字符串爲明文密碼鏈接上id和隨機碼 明文密碼不進行單向加密 隨機碼隨機的一組大小寫字母加數字 建立時間

 

 

 

 

一、當人們訪問a.html,也就是加密不想讓訪問的頁面,由於頁面會自動攜帶cookie

 

二、因此咱們在後端拿到cookie,和請求路徑時,而後進行數據庫對比,這裏有個問題,若是隻有HTML加密,則先判斷下請求的是html仍是其餘的,能夠減小查詢

 

三、若是在表中找到這個請求路徑,則查看cookie中是否有id=password這個數據,有的話就直接返回請求的html文件

 

四、若是不存在數據,則返回渲染的輸入密碼的html,本身想辦法把原來路徑放入輸入密碼html,輸入正確密碼後好跳轉

 

五、輸入密碼,ajax請求,經過輸入的明文密碼,以及id和數據庫中的隨機碼,變爲字符串鏈接起來,和password比較,或者直接比較明文密碼是否相同

 

六、一旦正確,爲了安全起見,返回加密後的password,也就是密文

 

七、在密碼html的js中,將獲得的密文和id存入cookie中,跳轉到原來訪問的頁面

 

八、這個時候有cookie了,而後對比成功,返回a.html文件

 

以上只是個人初期測試寫法,也許有更好的,和更優化的方法,歡迎指正

本文能夠隨意轉載分享,可是請標明出處

 下面爲測試圖片

 

 

 

 

相關文章
相關標籤/搜索