2015-06-27 212 views
1

我有一个英文字典webapp,说xyz.com,使用AngularJS(或任何其他用户界面)和REST API开发。没有认证,因为Web应用程序向所有人开放,并且没有用户注册。如何防止REST API被外部应用程序占用?换句话说,REST API只有在通过xyz.com访问时才能使用。我不希望其他开发人员使用我的REST api来为他的应用程序提供支持。保护外部/第三方应用程序的REST API

由于没有身份验证,OAuth不是解决方案。这个问题与Protect Web API from unauthorized applications类似,但是没有任何具体的答案可以解决这个问题。

+0

查看Cross Origin Resource Sharing,CORS http://www.html5rocks.com/en/tutorials/cors/ – Cerad

+0

@Cerad CORS正在克服相同的原产地政策限制。但那不是我的问题。我正在寻找一种方法来防止未经批准/不道德的使用我的公共API。流氓开发者可以开发自己的用户界面,并通过在他的域上运行的代理来调用我的REST API,从而通过传递相同的源限制。 – Suneel

+0

你要求一种方法来限制你的api使用到一个特定的域:xyz.com。 CORS可以做到这一点。 – Cerad

回答

0

如果您不能使用用户/密码,则可以使用仅由您的应用程序生成的api标记。然后,在每个请求中包含该令牌给你的API,你的API应该验证它。您还应该使用HTTPS加密通道。

This是保护休息服务的好建议。

+0

这仍然不会阻止来自外部客户端的访问,因为它可以像我的UI获取令牌一样访问令牌。这里没有任何东西可以区分来自浏览器访问xyz.com的请求与用Java或Python编写的客户端的请求。 – Suneel

相关问题