2017-09-16 29 views
0

我正在使用Django,我们计划打开我们的一些API用于第三方使用。从自己的应用程序/网络应用程序与服务器区分API调用

到目前为止,我们一直在使用DRF以及用于我们的Django Web应用程序的会话身份验证以及用于我们的Android应用程序的JWT的DRF。

我想知道的是来电是来自我们自己的应用程序(webapp/android应用程序)还是来自第三方应用程序(他们可以从自己的应用程序调用,可以是其他webapps /电话应用程序)。有什么办法可以区分吗?我们希望将第三方API调用的数量计入我们的服务器。

回答

0

您的Android应用程序可以添加标头User-Agent与应用程序版本。所以你可以区分请求。但它不是很可靠 - 因为任何Web客户端都可以发送这样的头文件。在这里你可以签署你的请求。通过URL添加一些秘密值从这个值计算md5/sha2并添加请求。 保护是基于想法只有你知道秘密价值。对于非关键任务来说没问题,但对于金融应用程序可能有风险。

+0

明白了你的观点。我们的API是我们的SaaS解决方案的一部分,我们的客户可以使用我们的应用程序(网络和电话)和他们的应用程序(使用3rs派对API)。我想控制不。的第三方API调用每月。这就是重要性。存储在会话cookie中的任何值(md5/sha2)都可能被恶意用户滥用。对于我们的应用以及第三方应用的长期令牌(比如由Google/Zoho为其API提供的一次性令牌),JWT会有帮助吗? – Sayantan

+1

绝对无法区分。假设你的Android客户端被黑客入侵 - 它代码的行为方式非常不同。它仍然是“你的”或“他们的”? –

+0

我想问 - 这是区分的最终目的?如果统计:应该有多准确?你永远不会100%。但如果98-99%就够了 - 用第一种方法。 Mal用户只是统计数据中的错误。如果你想提供更好的安全性 - 这是一种错误的方式。不应该依赖客户的数据。服务器应用程序应该以同样安全的方式对待所有人 –

相关问题