防止未经授权访问Restful API

时间:2018-08-01 09:00:36

标签: android rest security http-headers

我创建了一个Android应用,该应用使用Rest API从服务器请求资源。现在,我该如何在服务器端检查请求是来自应用程序的,而不是来自邮递员的。

例如, 我正在使用以下端点从服务器获取数据。 https://api.example.com/get-data/ {id}

现在,也可以从浏览器访问此端点。因此,我想要一个解决方案,使所有其他方式都无法访问该API。即。应该只能从我的Android应用程序访问它,而不是从我自己构建的任何浏览器,Postman或android应用程序访问。

换句话说,我希望我的Android应用程序发送一条特殊的信息,以帮助服务器对应用程序进行身份验证。  除此之外,我还担心有人会反编译我的APK并取出该信息以发出API请求。

注意:通过特殊信息,我指的是安全密钥或生成该密钥的机制。

我正在寻找类似浏览器默认设置的“ origin”标题,即使是网站开发人员也没有人可以更改此标题。 android中是否存在类似的东西?

1 个答案:

答案 0 :(得分:1)

您需要实现一个API令牌,其行为类似于您的API的密码。

一种简单的方法是使用带有令牌值的Bearer标头,该标头值来自API,并且您通过应用发送的每个请求都应将此令牌作为标头。

一个示例是Slim 3 Token Authentication,它针对Slim 3 Framework API执行此操作。如果您使用的是laravel API,请尝试https://laravel.com/docs/5.6/passport