[英]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。 因此,您可以創建一個模式,例如說用戶名+配置文件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.