1

在構建單頁應用程序時,在我的示例中使用Backbone w/Marionette,如何處理管理/超級用戶代碼部分。例如,如果我構建的網站具有可以刪除用戶的管理部分,從財務角度管理帳戶詳細信息等,則技術上攻擊者可以查看代碼。另外,攻擊者可以從視覺角度看到預編譯模板。雖然我明白你可以壓縮代碼/混淆,但這確實不是一個解決方案。這只是在開發SPA時被認爲是一個陷阱? IE只需要確保API是安全的,等等。如果有什麼不安全的話,本質上已經向潛在的攻擊者提供了路線圖...有關管理/超級用戶代碼被暴露的技術

+1

是否有任何理由發送非管理員用戶代碼相關的管理員的東西呢?爲什麼不只是向基本用戶發送基本信息,並向管理員用戶發送管理信息? –

+0

通常,對於單頁應用程序,所有代碼都會立即下載。包括模型,模板,控制器,路由器等。分離會很有趣,但我想這意味着實質上你會構建兩個SPA。服務器呈現的代碼在這方面很好,因爲最終用戶不知道爲什麼或者如何生成事情。對於客戶端應用程序,所有代碼都在客戶端。 – patbaker82

+0

是的,我已經處理了比我想要更多的SPA,並且從未遇到過這個問題,所以對我來說這似乎很奇怪。不過,我從未想過將所有內容都作爲SPA的先決條件。我根據需求加載了很多很少使用的東西(包括管理員)。 –

回答

2

接口的井碼實際上並不重要:它無論如何都是JavaScript,所以惡意用戶可以自己構建,或者直接生成所需的API調用。另外,你唯一能給出「路線圖」的就是API端點,這些端點往往很容易被猜到(例如管理用戶通常會經過「用戶」端點)。另外,這些端點通常是已知的:用戶可以通過點擊「用戶」端點來編輯自己的帳戶,而管理員可以編輯所有用戶。 API調用將是相同的(或非常相似),並且證書/授權將在服務器上進行驗證(理論上,攻擊者無法訪問)。

您的問題接近「我如何通過默默無聞的方式實現安全?」。我知道那不是你要問的,但它不遠。攻擊者無法看到管理代碼路徑或API調用應該沒有問題,因爲它們不應有任何特殊之處。

但正如您在您的問題中所說的,您絕對必須驗證/授權服務器上的所有內容。如果你不把所有來自用戶的數據視爲敵對或篡改,你將有一段糟糕的時間...

希望這會有所幫助!

+0

感謝大衛的全面回答。 – patbaker82