【问题标题】:csrf protection on mobile devices ( running in cordova)移动设备上的 csrf 保护(在 cordova 中运行)
【发布时间】:2014-09-21 04:22:24
【问题描述】:

我想部署我的移动应用,但在此之前我想解决 csrf 保护业务。

我的应用是 Cordiva 应用,服务器是 Django 服务器。我的应用程序仅使用 ajax 与服务器通信。从未提供过静态文件。

现在,我只是向浏览器发出 GET 请求以获取 csrf 字符串。

这是正常的做法吗?

在 StackOverflow 上,有一个帖子:CSRF Token in Phonegap using AJAX 显示了如何设置 cookie,但它不适用于我,因为我的静态页面不是由浏览器提供的。它们在手机的内存中。

在维基百科上,有一个使用 CORS 的示例:http://en.wikipedia.org/wiki/Cross-origin_resource_sharing。他们特别说浏览器会将Origin: http://www.example-mysite.com 发送到服务器。但是移动设备会发送什么?它没有域名。

再说一遍,我如何在手机上使用 csrf_protection?我可以简单地在我的服务器上创建一个方法,将 csrf 字符串发送给任何需要它的人吗?我不确定我应该这样做。

请问,如果您以前曾走上这条路,请告诉我典型的解决方案是什么?

提前感谢您的帮助和关心。

杰尼亚。

【问题讨论】:

  • 任何人会如何渗透你的应用程序,甚至需要使用 csrf 来打扰?这是桌面网页上的一个被高估的问题,其中有像 cmets 这样的实际向量,但应用程序不应该有这样的问题。
  • 好的。但是服务器如何知道请求是来自移动应用程序还是来自桌面?这个应用程序可以在两者上运行。

标签: javascript android django cordova csrf


【解决方案1】:

您可以将服务器设置为仅接受具有特定请求标头的请求。

示例:APPLICATION-ID:5sdc421cs624d

// Request with custom header
$.ajax({
    url: 'foo/bar',
    headers: { 'APPLICATION-ID': '5sdc421cs624d' }
});

然后你需要有这个头来请求csrf-string。

【讨论】:

  • 非常感谢 thom-x。我可以将其作为 GET 发送还是必须是 POST?
  • 您可以将其作为 GET 或 POST 发送。
  • 我不完全确定这将如何阻止 CSRF。攻击者还可以在提交表单的站点上设置相同的设置。
猜你喜欢
  • 2014-08-26
  • 2011-04-04
  • 2013-11-22
  • 2011-07-31
  • 2015-01-31
  • 2019-12-23
  • 2014-08-30
  • 2017-01-28
  • 2016-08-17
相关资源
最近更新 更多