簡體   English   中英

使用JQuery進行內聯頁面編輯(就地編輯)時如何維護安全性

[英]How to maintain security when using JQuery for inline page editing (edit-in-place)

我想允許用戶登錄后(如在Facebook上)在個人資料頁面上編輯項目。 讓我們將此頁面稱為profile.cfm

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

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

但是,使用JS內聯編輯時,沒有單獨的編輯頁面可以進行安全檢查。 那么,僅當正確的用戶登錄后,才能啟用JS編輯功能嗎? 我當然不希望用戶修改其他人的個人資料。 僅基於登錄憑據禁用/啟用內聯編輯Javascript代碼是不夠的,因為可以使用Firebug等輕松地將其重新啟用。

當然,即使它們可以啟用javascript也並不意味着服務器會接受編輯,因為它會執行自己的驗證。 只是我希望用戶如果沒有正確的登錄憑據,甚至沒有選擇甚至可以直觀地編輯頁面。

難道這只是預期的折中,因為基於javascript的控件可能對用戶可見(他們當然是在惡意修改頁面),但取決於其他變量,它們可能無法正常工作?

從邏輯/概念角度講,我堅持這樣做。

如果我是你。 我使用ASP.NET C#開發Web應用程序。 如果我希望使用JQuery在Java客戶端上完成所有工作,則可以執行以下操作:

  • 確定哪些內容可以標識我的客戶登錄名,並且在客戶端也可以與我一起使用。 例如他的ID,會話ID,Cookie等。
  • 創建一種加密技術。
  • 將其寫入隱藏字段。
  • 在客戶端進行相同的計算,然后匹配結果。
  • 如果該值等於隱藏字段的值,則您具有真實用戶。 否則沒有。 並且可以在很小的間隔后反復進行此操作。

示例:考慮您擁有個人資料ID,用戶名和會話ID。 因此,您可以創建一個模式,例如說用戶名+配置文件ID +會話ID,並創建該字符串的哈希。 然后在客戶端創建相同的內容。 然后驗證一下。 希望能有所幫助。

對於內聯編輯,必須進行一些初始化或一些腳本,以使表單字段可編輯。 因此請根據情況包括這些腳本。 表格范例

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

如果不滿足條件,則將不包含腳本,因此表單字段將不可編輯。 希望這可以幫助。

暫無
暫無

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

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