【问题标题】:Protecting REST interface from reverse-engineered access保护 REST 接口免受反向工程访问
【发布时间】:2017-12-12 16:00:57
【问题描述】:

我正在编写一个使用 REST 后端 (JSON) 访问数据库的 SPA (Angular)。添加基于 OAUTH 的基于令牌的身份验证系统来处理请求的登录和授权是相当容易的。

我现在关心的是如何检测何时有人编写了访问我的 REST 服务器的自己的应用程序?我想做的是采用一个使用条款,如果您使用我的 SPA,服务器访问是免费的,但如果用户编写自己的应用程序,则收取费用。

对 API 进行逆向工程肯定不难。由于用户可以访问所有 SPA 代码,因此我想不出一种方法,即您不能编写一个替代 SPA 来访问服务器并且它无法区分。

关于如何做到这一点的任何指示?

【问题讨论】:

    标签: rest oauth oauth-2.0 single-page-application


    【解决方案1】:

    CORS 标头会阻止其他域中的人访问您的服务。只要确保您正确设置它们并且不要向世界开放它们。

    但它不会阻止某人通过您的服务进行代理。这更难阻止。您可以从一些 IP 地址中寻找高度活动。

    OAuth2 也可以提供帮助。这至少会让其他人更难假装他们的浏览器。这也很有效,因为您会看到来自不同用户(可能)的大量活动都来自同一个 IP 地址或范围。

    不过,最好的建议是创建您的服务,以便其他人使用它并不重要。也许您可以找到一种完全相反的方法并完全打开它。许多服务已经通过开放 api 获得了成功(事实上,它们可以取得更大的成功)。您是否有特定理由不允许用户方便地访问您的服务中的数据?

    【讨论】:

    • 我想做的是让那些通过我提供的 Web 应用程序访问的人免费使用 API,但我希望人们最终会希望在后端形成自己的数据库查询,我想为此向他们收费。
    • @AlanObject 好吧,如果这是您的要求,您只需在 API 中强制执行,而不是在前端。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 2020-05-02
    • 2017-05-28
    • 2017-09-21
    • 2013-01-03
    • 2019-10-11
    相关资源
    最近更新 更多