關於百度網盤提取碼驗證失敗問題的猜想


百度雲盤的出現為網絡資源的存儲和共享提供了平台,而由於保護用戶的隱私安全,百度雲盤隨后限定只有輸入相應的提取碼才能訪問分享的文件。

但最近在百度雲盤資源提取時碰到個奇怪的問題:如果同時打開了多個資源分享鏈接並輸入了提取碼之后,此時再依次點擊每個資源的"下載資源"或者"保存到網盤",部分資源就會出現"提取碼錯誤"的提示。

隨后又測試了幾次,仍然出現了類似的提示,為了找出錯誤原因,我重新調整了提取百度雲盤資源的操作流程:

1)依次打開百度雲盤資源分享鏈接;

2)在輸入第一個鏈接的提取碼之后,直接點擊“下載”或“保存網盤”;

3)重復步驟2,依次輸入下一個鏈接和進行下載操作;

而根據以上的這3個步驟,原來出現錯誤的提示卻沒有出現,這說明正確的提取碼是能夠下載資源的,於是我猜想這個錯誤是不是因為保存提取碼的原因呢?

那么就需要知道它的提取碼會放在那里,一般而言,為了保持用戶訪問狀態,避免重復輸入同一個驗證或者訪問權證,網站都喜歡把第一次保存的驗證碼放入到session的某個對象中。

 session的概念
   session是指用戶u與服務器s在會話過程中的用來存儲對象信息的容器,一般每次請求都會產生新的session對象,即使sessionID相同。
 session的工作原理
  ①當一個session第一次被啟用時,一個唯一的標識被存儲於本地的cookie中。
  ②首先使用session_start()函數,PHP從session倉庫中加載已經存儲的session變量。
  ③當執行PHP腳本時,通過使用session_register()函數注冊session變量。
  ④當PHP腳本執行結束時,未被銷毀的session變量會被自動保存在本地一定路徑下的session庫中,這個路徑可以通過php.ini文件中的session.save_path指定,下次瀏覽網頁時可以加載使用。
 
為了驗證session是否可能擾亂,就需要找到各個資源網頁的session對象,結果這幾個資源網頁的session的ID完全相同,並且它們都在由相同用戶與百度服務器建立連接產生的,也就是說這幾個網頁保存的提取碼使用的是相同的session,並且它的值卻不相同。
然而在提煉sessionID數據來匹配文件下載權限時就會出現被多重覆蓋的session變量驗證失敗的現象, 到此步驟,就可以解釋出按照之前操作會出現錯誤提示的原因了。

 


免責聲明!

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



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