簡體   English   中英

angularjs ui路由器解析不安全嗎?

[英]isn't the angularjs ui-router resolve insecure?

如果我當前狀態

.state("display",
    {url:"/display",templateUrl:"display.ng.html",
    controller:"DisplayController",
    controllerAs:"displayController"})

並且我為狀態添加了一個解決方案,以便只有登錄的人才能訪問該路由,例如:

resolve: {
    "currentUser": ["$meteor", function($meteor){
      return $meteor.requireUser();
    }]
  }

*摘自http://angular-meteor.com/tutorial/step_08

這不會造成安全漏洞嗎?

任何人都不能在他們的瀏覽器中打開控制台並“重寫”路由,從而不需要用戶嗎?

如果我們針對提出的問題,“是”將是簡短的答案。 答案背后的真相是,它並不是為了確保安全而設計的,因為這是不可能的。 用戶/客戶端完成頁面下載的第二秒,從技術上講,他們可以完全訪問您提供給他們的所有內容。 無論您采取了多少客戶端預防措施,人們都可以保存您的文件,根據需要對其進行編輯,然后使用這些文件重新加載頁面。 他們可以選擇所需的路線,運行所需的javascript等。

這是什么意思? 永遠不要信任用戶。 永遠。 如果您不希望某人看到某些東西,則不要在響應中完全包含它。 如果將其隱藏在客戶端,則不會阻止用戶打開源查看器,而只是在文件中進行查找即可。 即使您精簡了所有內容,但只要有足夠的動力,那里的某人就能找到所有內容。

API調用,套接字通信等同樣適用。客戶端可以發送他們想要的任何內容。 如果他們知道URL,預期數據和發送方法,則只需創建自己的假客戶端並發送他們想要的任何東西。 這就是為什么客戶端驗證僅出於UI原因(將框標記為紅色,通過拒絕表單節省時間等)非常有用,但是您必須重新驗證並重新檢查服務器端的所有內容。

tl; dr-是的,這是“不安全的”,但這不是角度/ ui路由器的故障。 這就是客戶端開發的方式。 如果您不希望沒有訪問權限的用戶看到某些內容,請不要將其完全包含在您發送給他們的數據/文件中。 對其進行檢測並將其剝離到服務器端。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM