【问题标题】:Securing my private API保护我的私有 API
【发布时间】:2014-11-27 23:24:54
【问题描述】:

我正在完成一个供我自己使用的 API,它用于将我自己用 Backbone 制作的 Javascript 客户端与我用 Laravel 制作的 API 进行通信。

我有一个根路由,它提供在浏览器中加载我的应用程序所需的所有 js,以及一个名为“api/v1”的组下的几个路由,它为我的客户端应用程序提供 JSON。

我需要我的用户可以使用该应用擦除数据,例如软删除旧用户和修改其他数据,但其中一些数据包含我不希望其他人看到的敏感信息。

我一直在阅读有关 OAuth2 的一些信息,并且我发现“隐式授予”非常适合无法保持密钥机密性的客户端,但它要求我将用户发送到登录平台,然后将他重定向回应用程序。但我想在不影响我的用户工作流程的情况下使用我的客户端应用程序来实现这一点。

我看过“资源所有者密码凭据授予”,但它要求我的客户存储我的应用程序的密钥,这并不安全。

我认为我遗漏了一些东西,有人能指出我正确的方向吗? 在此先感谢

【问题讨论】:

    标签: javascript api backbone.js laravel oauth


    【解决方案1】:

    您可以使用 Laravel 的路由过滤器来保护您的路由免受未经授权的用户的攻击。但是,由于您的 Laravel 应用程序现在只是一个端点,因此前端框架(在您的情况下是 Backbone)将承担身份验证和授权方面的繁重工作。

    一旦您设置了路由过滤器,就不会阻止授权用户尝试执行他们无权执行的操作。

    我上面的意思是例如:

    您有一个 API 端点:/api/v1/users/159/edit

    端点是 RESTful 7 之一,可用于编辑用户。任何软件工程师或开发人员都知道这是一个 RESTful 端点,如果您的应用程序授权,则可以向该端点发送包含数据的请求。

    您只希望用户 159 或管理员能够执行此操作。

    对此的解决方案是角色/组/权限,无论您想如何称呼它们。在您的 Backbone 应用程序中为您的应用程序设置用户权限。

    阅读这篇很棒的文章(在 AngularJS 中),了解如何使用前端 JavaScript 框架正确地进行身份验证/授权。就像我说的,它在 Angular 中,但它的想法是一样的。

    文章:https://medium.com/opinionated-angularjs/techniques-for-authentication-in-angularjs-applications-7bbf0346acec

    【讨论】:

    • 这很棒,我以前用过 Angular,你指给我的例子真的很有启发性,它给了我一些关于如何在 Backbone 中实现它的想法。非常感谢我的朋友。
    猜你喜欢
    • 1970-01-01
    • 2016-03-04
    • 2011-04-23
    • 2012-05-06
    • 2015-08-11
    • 2018-09-25
    • 2016-07-19
    • 2014-09-27
    • 2018-05-15
    相关资源
    最近更新 更多