2011-12-29 90 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