2012-07-31 48 views
3

我在另一篇文章我在這裏做糊塗由一個答案: https://sharepoint.stackexchange.com/questions/40057/is-an-updatepanel-a-bad-decision/40412#40412自然UpdatePanel的

我的理解是,一個UpdatePanel處理一個Button_Click沒有做任何事情,從安全角度來看,比正常的回發不同。 UpdatePanel IS仍在進行完整的回發,它只是在UpdatePanel的範圍內異步發生。

以下情景:

我正在處理upvote點擊事件。我可以使用AJAX提交新的投票,也可以在UpdatePanel中使用Button_Click。 (理所當然地認爲投票應該是異步的,對每個投票回發將是可怕的國際海事組織)

爲了避免投票作弊,我綁定了投票項目和用戶,所以在提交我需要包括這兩件事的投票。

使用AJAX,看起來好像這兩個字段都很容易被黑客攻擊,以至於有人可以獲得一組用戶名並運行循環,在短時間內提交數百張投票。

使用UpdatePanel,我至少可以拉取當前用戶服務器端的身份,而不會將任何項創建方法公開給Web服務。

這是不是從根本上更安全?我誤解了UpdatePanel的工作原理嗎?

回答

2

從安全角度來看,UpdatePanel確實與回發相同。這只是輸出部分渲染的問題。現在

,對於您的情況:

做一個純粹的Ajax方法不會損害任何方式的安全性。只是因爲它的JavaScript並不意味着你被迫開放作弊,通過實際接收用戶作爲請求中的參數。這就是你有認證,cookies等。從進入的請求中識別用戶,使用Principals和Identities。

爲了簡短起見,您可以通過使用UpdatePanel和AJAX來實現安全實施。

注意:AJAX並不強迫你暴露你的安全實現的web服務外,在服務器上的端點確實可以只是一個MVC Controller,一個HttpHandler

+0

謝謝!我希望我不瘋狂:)一個HttpHandler是否可以訪問會話數據? WebServices的問題往往是他們通常無法可靠地訪問身份驗證來進行這種區分。 – Wesley 2012-08-01 22:37:53

+0

沒問題。哦,關於會話使用,你可以使用它。檢查了這一點:http://stackoverflow.com/questions/1106776/how-to-use-asp-net-session-state-in-an-httphandler。你基本上必須使用IRequiresSessionState – 2012-08-02 13:59:04