2010-03-21 90 views
2

我想'AJAX-ify'我的網站,以改善用戶界面體驗。在性能方面,我也試圖擺脫UpdatePanel。我在Encosia上遇到過一篇很棒的文章,展示了使用PageMethods進行發佈的方式。我的問題是,生產環境中的頁面方法有多安全?公開的話,任何人都可以創建一個JSON腳本直接發佈到服務器,或者是否存在跨域檢查?我的PageMethods也會將數據寫入數據庫(過濾後)。PageMethods安全

我在頁面中使用表單身份驗證,並且在頁面加載時,它將未經身份驗證的用戶重定向到登錄頁面。如果用戶直接POST方法,或者是整個頁面繼承的認證,頁面上的頁面方法是否也需要檢查認證? (基本上,即使用戶只能發佈到PageMethod,整個頁面循環都會發生嗎?)?

感謝

回答

3

PageMethods與它們駐留的處理程序一樣安全。

FormsAuthentication將保護除登錄頁面以外的所有內容。

在不受保護的處理程序上,如登錄,您應該只公開以下方法:1)不敏感或2)驗證用戶。

編輯:在回答關於CSRF和XSS請參閱Pagemethods的http://weblogs.asp.net/scottgu/archive/2007/04/04/json-hijacking-and-how-asp-net-ajax-1-0-mitigates-these-attacks.aspx

+0

你忽略了CSRF。 – SLaks 2010-03-21 14:06:30

+0

@Slaks - 我不這麼認爲。 REST方法需要application/json內容類型。 CSRF或XSS漏洞無法實現。我花了一段時間來追查一些確鑿的證據 - 請參閱http://weblogs.asp.net/scottgu/archive/2007/04/04/json-hijacking-and-how-asp-net-ajax-1-0 -mitigates-these-attacks.aspx – 2010-03-21 14:56:32

+0

Hi Sky Sanders。我的PageMethod旨在允許用戶更新他們的個人資料設置。我總是使用POST(即使在檢索數據時)並確保設置了contentType。 Page Handler是一個標準。aspx處理程序,其中IsAuthenticated在頁面加載時被檢查。當你說FormsAuthentication會保護除登錄頁面以外的所有內容,這是否意味着IsAuthenticated(頁面加載)將由頁面方法繼承,因爲它們都在同一頁面上? – keyboardP 2010-03-21 16:02:58

1

你試圖防止CSRF攻擊。

這些攻擊可以通過在POST參數中要求授權碼並在初始頁面加載中提供授權碼來阻止。 (驗證碼應該是每個IP地址和每個用戶,並且應該很快到期)

爲了增加安全性,您可以使每個授權碼僅可用一次,並讓每個請求返回一個新的授權碼。 (但是,如果任何請求失敗,則需要重新加載頁面)

+0

感謝您的幫助。爲了澄清,當頁面加載時,我應該使用IP/Session等數據生成代碼...然後用戶發送POST請求。如何從客戶端獲取POST參數的相關信息?它僅僅是一個使用javascript獲取IP /用戶代理信息並將其放入參數的情況? – keyboardP 2010-03-21 14:38:11

+0

@TenaciousImply - 我不認爲簡單的CSRF/XSS是這種情況下的一個問題。 – 2010-03-21 15:02:03

+0

@TenaciousImpy:我的意思是認證碼只能用於單個IP地址/用戶(例如,安全散列)。但是,我認爲Sky Sanders是正確的,這不是一個問題。 – SLaks 2010-03-21 15:08:50

0

認爲像一個迷你webservie本地頁面的評論和其他答案。事實是他們將沒有額外的檢查和驗證,除了那些放置在整個網站上的和那些你選擇放入的。

使用Pagemethods是一個聰明的想法,從'封裝',如果你打算使用它們,這並不會影響試圖採取一些額外的安全措施。