2011-12-29 88 views
0

我正在開發一個應用程序,使用.net MVC3通過頁面上的js引用執行一些Javascript。Javascript服務器端調用和MVC3?

腳本啓動後,會在客戶端返回並執行一些javascript。在這個過程結束時,我需要做一個電話回mysite.com送客戶端的相關詳細信息,如瀏覽器,IP地址等

要做到這一點,我使用異步回調到我的服務器發送數據:

xmlhttp.open("GET", "http://mysite.com/record_values/" + 
     navigator.appVersion + "/" + 
     navigator.cookieEnabled + "/" + 
     encodeURIComponent(document.URL), 
     true); 

是否有任何其他推薦的方法將此信息返回到我的服務器進行錄製?

謝謝。

+4

我實際上會發表這個。 – 2011-12-29 16:59:32

+1

澄清,HTTP方法「POST」 – rossipedia 2011-12-29 17:06:53

+0

您唯一的選擇是新的「網絡套接字」設施。 – Pointy 2011-12-29 17:07:10

回答

0

注意,有些人會尋找(瀏覽器版本)的信息已經在用戶代理字符串傳遞。 Cookie支持不是。引薦應該已經存在的頭(因此URL應該可以不必傳遞)

正如丹尼爾提到的,這應該是POST。 100%絕對是一個職位。任何數據操作,檢索旁邊的東西總是應該通過一個帖子(實際上http規範的一部分)

此外,我還會傳遞MVC AntiForgeryToken(@ Html.AntiForgeryToken()和[ValidateAntiForgeryToken])控制器方法)來幫助確保攻擊者不能通過重複調用這個函數來重載您的服務器/數據庫。

+0

我讀(http://stackoverflow.com/questions/4757890/when-the-use-of-a-antiforgerytoken-is-not-required-needed),反僞造令牌在網站的公共部分,用戶也沒用尚未認證。發佈的請求將來自位於站點1的Javascript,並將數據發送到mysite.com/xxxx/上的我的控制器。是否有可能避免這樣的CSRF攻擊?可能最適合新的問題? – ElHaix 2011-12-30 01:09:50

+0

如果這是一個任何人都可以訪問的公共應用程序,那麼是的 - 它相當無用。如果它的意思是內部的,那麼我會考慮一些令牌方案,但不幸的是內置的支持不提供一次性使用令牌。只要注意誰可以調用最終將數據存入數據庫的方法。攻擊者可以通過對數據庫的DoS攻擊直接輕易利用此漏洞,或者使用類似XSS的攻擊程序讓每個瀏覽該網站的瀏覽器都會反覆調用該數據庫。只是需要考慮。 – 2011-12-31 08:13:47