簡體   English   中英

如何防止Meteor.user()的計時漏洞?

[英]How can I prevent Meteor.user()'s timing hole?

模板要求...

if (this.userRequesting._id === Meteor.user()._id) { ... }

...檢查一個人的身份。 (我懷疑這不是處理此問題的最佳方法,但我會將其保存在另一個問題中,以免使該問題不致過多)。

我的問題是,這導致了巨大的錯誤級聯,提示Meteor.user()是未定義的, 在頁面加載時才存在 。一旦頁面被加載,此代碼將執行而不會出現問題。 顯然,有一個計時漏洞(或者我認為是這樣),在此時間內Meteor.user()在頁面加載時Meteor.user()仍未分配。 將上面的代碼替換為...

    ____________
if (Meteor.user() && this.userRequesting._id == Meteor.user()._id) { ... }

...可以解決問題,但是...... 加油 ......這不可能是猶太教。 關於模板和流星,我錯誤地做出了什么假設?

如果相關,我將使用accounts-password作為我的騙子客戶經理。


[編輯]:這看起來像是同樣的問題 ,但是我在尋找解決方案而不是解決方法的前提下放棄了這個問題。 (我已經知道檢查Meteor.user()可以解決此問題。)

是的,您基本上是正確的。 首次刷新頁面時,不認為該用戶已登錄,因此必須驗證該用戶。 但是會立即調用模板內容,然后在加載其他內容時再次調用(如果將alert放入rendered方法中,則會注意到這一點)。 最好的解決方案正是您的建議,盡管您可以使用Meteor.userId()來獲取ID:

if (Meteor.userId() && Meteor.userId() === this.userRequesting._id) {
    // ...

您可以使用Meteor.userId()來獲取已登錄用戶的_id屬性,如果未登錄,則為null (我認為)。

暫無
暫無

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

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