gpt4 book ai didi

django - Web 客户端和移动 REST api 安全性的推荐配置

转载 作者:行者123 更新时间:2023-12-04 04:26:48 24 4
gpt4 key购买 nike

我意识到关于这个主题有很多问题,我已经研究了几天了。我想确保我的问题尽可能具体,因为我还没有完全了解最佳方法。
目前我有一个开发的 django 站点,Web 客户端可能通过 django-piston json REST api 进行大约 95% 的通信。另外 5% 是一些重新登录功能,仍然通过具有 CSRF 保护的 POST 表单。理想情况下,我想将其余部分也移动到 REST api 中。
我现在需要找出最好的推荐解决方案,以可重用且愉快地共存的方式保护 Web 客户端和移动客户端(尚未开发的应用程序)。我已经阅读了许多最终为移动端推荐 OAuth2(和 https)的帖子,但我仍然对如何设置 Web 客户端安全性感到困惑。我也在理解 OAuth2 方面以及我是否可以使用 2-legged 形式。就目前而言,Web 客户端已通过 django 身份验证。从技术上讲,活塞中的 jsonp 功能仍然有效,所以我认为任何人都可以使用来自 3rd 方应用程序的 api,只要他们的网络 session 具有身份验证 cookie?
我的api使用总结:

  • API 是服务器应用程序的完全私有(private)接口(interface)
  • 如果 API 不能被 3rd 方 Web 客户端 mashup 广泛重用,那将是理想的选择。
  • 数据不敏感。它只是一个社交类型的网站,其中包含最多的个人信息是基本的用户个人资料,如电子邮件、地址等。

  • 我的问题摘要:
  • OAuth2 是保护移动应用程序访问的最佳推荐方法吗?它与网络客户端方面有什么关系吗?如果推荐使用 OAuth2,它是否应该是应用程序版本的应用程序范围的 key ?
  • Web 客户端是否应该使用通过 ajax 传递的 CSRF,并且只禁用 jsonp 以确保其始终相同的来源?基本上,我是否单独对待 Web 客户端安全性?
  • 我应该如何组织 urls/app 实例/子域或任何建议来维护 web 与移动安全的东西?我是否只需要单独的 url 前缀,一个用于使用不同规则的移动设备?

  • 我正在寻找解决这些问题的 django-piston 特定建议。我已经分支了我的项目并开始使用这个 fork 版本的活塞: https://bitbucket.org/jespern/django-piston-oauth2
    我的一个想法是创建一个活塞资源,首先检查它是否同源,然后只强制执行 django 身份验证,否则它强制执行 oauth2,但我不确定这是否合适。
    2012 年 1 月 1 日更新
    根据 Spike 提供的信息,我开始使用活塞 oauth2。我最终创建了一个 fork 来为 nonrel django (mongodb) 添加一些修复,并且我 fork 了某人的示例以也使用 oauth2 和活塞:
    https://bitbucket.org/justinfx/django-piston-oauth2-nonrel-example
    现在这只是我真正将其与我自己的项目 Hook 并使其正常工作的问题。但是这些测试都很好用。

    最佳答案

    我完全支持 OAuth2,所以我将根据该解决方案进行回复。

    Is OAuth2 the best recommended approach to securing the mobile appsaccess? Does it have anything to do with the web client aspect? And ifOAuth2 is recommended, should it be an application-wide key that isversioned with the app releases?


    是的,OAuth2 目前被广泛认为是推荐的方法。它比 OAuth1 容易得多。我建议实际阅读 the spec而不是关于规范的博客文章,因为规范本身写得很清楚。除了规范之外,查看它的已建立实现很有用,例如 Facebook'sFoursquare's因为它们并非在所有方面都遵循规范,而是进行了一些修改以使其更实用和易于使用。
    至于版本控制,从教条的 REST 角度来看,这是 frowned upon .然而,从更实用的角度来看,这是非常普遍的做法,并且让 API 开发人员和客户的生活变得更加简单。我建议阅读 Apigee 博客,因为他们有很多关于 versioning 等主题的帖子。 .

    Should the web client use CSRF that is passed over ajax, and justdisable jsonp to ensure its always same origin? Basically, am Itreating the web client security separately?


    如果您使用完整的 oauth2 解决方案,您将需要启用跨站点 api 请求。要拒绝您不知道的应用程序,您可以在查看传入的 access_tokens 时添加检查。以下是一些有关您拥有的不同选项的阅读:
    http://blog.apigee.com/detail/crossing_the_streams_handling_cross-site_api_requests/

    How should I go about organizing the urls/app instances/subdomains orwhatever is recommended to maintain the web vs mobile security? Do Ijust need separate url prefixes, one for mobile that uses differentrules?


    只需决定什么对您有用。如今,许多人的移动网站位于“m.mysite.com”或“mobile.mysite.com”。如果您使用完整的 OAuth2 实现,则此决定与整个身份验证讨论并不真正相关。

    I am looking for django-piston specific recommendations to solvingthese problems. I have already branched my project and started to playwith this forked version of piston:https://bitbucket.org/jespern/django-piston-oauth2


    我不熟悉这个,因为我使用 tastypie .如果它不适合您,我使用了一个出色的 Django OAuth2 独立服务器:
    https://github.com/hiidef/oauth2app

    关于django - Web 客户端和移动 REST api 安全性的推荐配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9049096/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com