android - CSRF 安全策略,用于创建具有网站界面的 Android 应用程序

标签 android django web csrf

晚上好

我正在使用基于 Django 的服务器创建一个 Android 应用程序,以便将该应用程序与存储信息的中央数据库连接起来。

我读了这篇文章CSRF in Mobile Applications提到应用程序是 CSRF 安全的,所以我不需要保护我的服务器免受这种攻击。

但是如果我想(在未来)扩展这个项目,这样用户就可以同时使用 Android 应用程序和网站来查看和修改他的信息。最好的策略是什么?

我是否应该在浏览器中保持单独的 session ,区分网站用户和 Android 应用程序用户,并仅在网站用户中检查 csrf token ?或者我应该从这个服务器创建一个完全独立的网站,只保护网站的 csrf 吗?或者,我是否应该保持 csrf 保护并在 Android 应用程序中处理它?<​​/p>

谢谢你的帮助,

--- 编辑---

@petkostas 建议我使用 REST 架构。我一直在阅读有关 REST 的内容,据我所知,其中没有保留任何 session 。

因此,如果 REST 是您的建议,我将如何只对某些用户保证某些数据的安全,更改体系结构以便我拥有 session ,或者在每次请求时向用户请求用户名和登录(这似乎就像一个糟糕的选择,因为我必须在每个请求中发送敏感信息(密码))?

最佳答案

我有一个非常相似的用例:android 应用程序、ios 应用程序和网络应用程序 (AngularJS)。

通过使用两种不同身份验证方法的 REST API(使用 Django Rest Framework (DRF))解决了这个问题:

设置非常简单:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
    ),
    # (...)
}

在您的情况下,我会使用 DRF 和 TokenAuthentication,同时知道您可以在需要时添加更多身份验证方法。

关于android - CSRF 安全策略,用于创建具有网站界面的 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25128486/

相关文章:

android - 弹出 fragment 后退堆栈后显示 snackbar

python - Django:将用户上传保存在单独的文件夹中

python - 如何在 Django 中向 UserCreationForm 添加字段?

c# - 优化自定义控件的javascript

java - 以编程方式从 Android 使用首选语言打开 Google Play

android - 如何在android中的两个或多个应用程序之间安全地共享数据?

javascript - 以编程方式提交表单数据android(数据丢失)

django - 获取 UpdateView django 中的所有字段

python - Django - 当有人通过 PayPal 付款时调用函数

python - 使用flask根据python传递的数据更改html图像