公众如何使用我的Instagram应用程序?

时间:2016-06-09 05:44:02

标签: javascript api instagram

我正在使用名为' Instafeed'的JS插件。 https://github.com/stevenschobert/instafeed.js动态提取上传到Instagram帐户的最新图片。

我的目标是让这个为政府客户服务。我首先在我自己的个人帐户中测试了它,并找到了我的用户ID,客户ID并生成了令牌。

<script type="text/javascript">
    // Get the most latest instagram post and insert it into the page in the DIV# instafeed
    var feed = new Instafeed({
        get: 'user',
        userId: '249842490',
        accessToken: '249842490.1677ed0.0283e662751a4e369ae856f60a4b6228',
        sortBy: 'most-recent',
        resolution: 'low_resolution',
        limit: 1,
        clientId: 'dee7958de6a64ed284b95abb1619b790'
    });
    feed.run();
</script>

现在要获取客户端ID,我必须在Developers区域中创建一个应用程序。从2016年6月1日起,任何新的应用程序都将被沙盒化,并应用限制,直到审核并正确发布为止。 https://www.instagram.com/developer/limits/

一切正常并按原样拉出图片(例如https://github.com/SLQ-web/Packery-Mockup-SLQ-Homepage/blob/Ryan's-Responsive-Spec/html/widget-social.html),但我已经被PM询问了依赖关系和漏洞。我可以看到明显的依赖关系是Instagram帐户,Instagram应用程序和令牌生成器。

我打算让Instagram应用程序生效,因为500 /小时的速率限制对于页面获得的流量来说太小了。一旦Instagram应用程序生效,我的客户似乎非常关心安全性。

我无法回答的是关于谁可以使用该应用程序的安全风险?出于什么目的?有人可以利用该应用程序破解Instagram帐户吗?请注意,我正在为极端风险的客户工作。我只能假设访问该页面的用户使用那里的应用程序,我在该页面上调用应用程序来生成要显示的内容的Instafeed.js。该应用程序不适用于任何其他用途。

1 个答案:

答案 0 :(得分:1)

每当您在客户端上嵌入信息时,您都冒着访问该客户端的任何人以某种方式获取该信息的风险。这适用于网站,原生移动应用等。

API提供商(本例中为Instagram)知道这是一种风险,这也是他们专门为您提供某种标识符组合的原因(在您的情况下为userIdaccessToken和{ {1}})允许客户端应用程序发出请求,但监控与这些标识符相关的流量,并提供限制流量,黑名单等设施。

这些类型的凭据非常有用,因为它们通常可以重置(如果您发现来自某个来源的某些奇怪流量,您可以重置令牌并重新部署您的应用程序。)

这种类型的东西属于“API管理”领域,这些功能非常普遍。不幸的是,总是有人从客户端应用程序中获取这些密钥的风险。

如果您正在为之工作的人不希望人们获得这些凭据,您可以在客户端实施某种用户身份验证(现在最常见的方式之一是OAuth,仅作为示例),以及一旦客户端进行身份验证,他们就可以调用服务器,服务器将包含clientId API和InstafeeduserId等。只需在客户端和Instagram之间添加一个额外的层,并允许您更多地控制谁从您的应用程序发出请求(它仍然无法消除将从您的客户端应用程序进行身份验证的恶意用户,但在至少它将访问点保存在一个单独的位置,这将是你的服务器。