2014-09-02 49 views
1

我想允許用戶在他們登錄後(如在臉書上)編輯其個人檔案頁面上的項目。讓我們打電話給這個頁面profile.cfm如何在使用JQuery進行內聯頁面編輯時保持安全

只有當用戶登錄並且他們的憑據與頁面的憑據相匹配時,我很困惑如何允許內聯編輯頁面(即,用表單輸入替換頁面元素,以便用戶可以編輯內容)他們想編輯。

傳統上,我將有一個單獨的頁面來編輯像profile-edit.cfm這樣的配置文件。在這個頁面上,我將檢查他們想要編輯的配置文件的ID是否與存儲在其Session變量中的ID相同。如果一切都匹配,那麼頁面將顯示。如果不是,它會失敗。

但是,在JS內聯編輯中,沒有單獨的編輯頁面來處理安全檢查。那麼,只有當正確的用戶登錄時,我怎麼才能啓用JS編輯功能呢?我不希望用戶修改其他人的個人資料。簡單地禁用/啓用基於登錄憑據的內聯編輯Javascript代碼是不夠的,因爲可以輕鬆地使用Firebug等方式重新啓用它。

當然,儘管它們可以啓用JavaScript,但並不意味着服務器將接受編輯,因爲它進行自己的驗證。只是,如果用戶沒有正確的登錄憑據,我寧願用戶甚至沒有可視化編輯頁面的選項。

這是否只是基於JavaScript的控件的預期折衷方案,它們可能對用戶可見(當然惡意修改該頁面)將取決於其他變量無法正常工作?

我從一個邏輯/概念點卡住了這個。

+0

你是如何保存這些偏好的? – 2014-09-02 11:33:00

+0

當用戶登錄時,我將他們的ID存儲在會話變量中,例如SESSION.ProfileID。爲了確保正確的用戶登錄,它會像''然後允許用戶編輯這個配置文件。 Coldfusion使用單獨的模板很容易實現。但它的內聯讓我感到困惑 – 2014-09-02 12:19:27

回答

-1

對於內聯編輯,必須有一些初始化或一些使表單域可編輯的腳本。所以根據條件包含這些腳本。表格示例

If(session[ID] == Profile ID){ 
    <script type="text"> 
     Add all your scripts which will allow inline editing. 
    </script> 
} 

如果條件不符合,則不會包含腳本,因此表單字段將不可編輯。 希望這有助於。

+1

是的,但用戶可以輕鬆啓用腳本,無論我是否包含它。在您的示例中,它將忽略腳本部分,這很好,但是...如果用戶正確登錄到他們自己的配置文件頁面,他們將看到該腳本。他們複製腳本,轉到不同的配置文件頁面,使用Firebug粘貼腳本或其他東西,整個事情再次運作。他們現在可以編輯其他人的個人資料(即使由於服務器驗證而無法工作)。我想想,我需要JS來檢查它不能做的SESSION變量。 – 2014-09-02 12:21:29

0

如果我是你。我使用ASP.NET C#開發Web應用程序。如果我曾經想擁有的一切對使用JQuery客戶端完成,使用Javascript我會做到以下幾點:

  • 決定哪些事情我識別客戶端登錄,我有這些要求是我在客戶端也。如他的ID,會話ID,Cookie等。
  • 創建加密技術。
  • 將其寫入隱藏字段。
  • 在客戶端計算相同的值,然後匹配結果。
  • 如果這等於隱藏字段的值,那麼您擁有可信用戶。否則不。這可以在小的時間間隔之後反覆完成。

例如: 考慮你有你喜歡的個人資料ID,用戶名和會話ID。因此,您可以創建一個模式,如說用戶名+配置文件ID +會話ID並創建該字符串的散列。 然後在客戶端創建相同的。然後驗證它。希望有所幫助。

+0

是的,只有使用像ASP.NET或ColdFusion這樣的應用服務器語言纔有意義。但是一旦ASP.NET成功驗證所有內容,就可以進行內聯編輯(就像你在Facebook上一樣),需要啓用javascript代碼才能進行內聯編輯。 – 2014-09-02 12:27:04

+0

所以你沒有任何服務器端應用程序? – FreshDev 2014-09-02 12:58:57

+1

如果您需要從服務器會話中獲得配置文件ID,您可以通過讓服務器在HTML隱藏字段中寫入它的哈希來獲得配置文件ID。然後你用你自己生成的當前登錄用戶的散列讀出來。 – FreshDev 2014-09-02 13:01:53

相關問題