自己寫的加密網頁,與百度網盤私密很相似,需要密碼才能訪問(原創)


 

題記:

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

簡易分析百度網盤:

1、先將所有cookie清空,賬號取消登錄

 

 

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

 

 

 

3、敲擊回車,發現url鏈接發生變化

 

 

 

4、url從 /s/1L... 變為 /share/init?surl=Lrw...

 

 

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

 

 

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

 

7、這時候我們輸入正確密碼,重新加載分享鏈接,發現返回正確的html,和200狀態

 

 

8、並且會發現cookie中存入很多內容,並且頁面在訪問后端時,會自動攜帶cookie(最近一段時間我一直在用localstorage,所以忘了cookie,可以自動攜帶)

 

所以通過上分析,發現主要存於cookie內容中,實現的加密訪問

 

下面就是我寫的加密網頁原理(我使用的是nodejs,ejs模板,express),因為后端可以用好多種去寫,這里只寫思路,不寫具體代碼

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

 

id path password plaintext random_code time
一般為uuid 請求的路徑,根據自己喜好寫,我的就是 /a.html sha256加密,字符串為明文密碼連接上id和隨機碼 明文密碼不進行單向加密 隨機碼隨機的一組大小寫字母加數字 創建時間

 

 

 

 

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

 

2、所以我們在后端拿到cookie,和請求路徑時,然后進行數據庫對比,這里有個問題,如果只有HTML加密,則先判斷下請求的是html還是其他的,可以減少查詢

 

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

 

4、如果不存在數據,則返回渲染的輸入密碼的html,自己想辦法把原來路徑放入輸入密碼html,輸入正確密碼后好跳轉

 

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

 

6、一旦正確,為了安全起見,返回加密后的password,也就是密文

 

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

 

8、這個時候有cookie了,然后對比成功,返回a.html文件

 

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

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

 下面為測試圖片

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM