这个问题是与此类似:
开发API -如何使它安全吗?
我要的是开发针对我的服务器上的REST API基于jQuery的查询检索网页上显示的一些数据。
我想在网页和jQuery的授权用户才能够访问此数据,但不希望别人能复制jQuery和把它放在自己的网站上以任何方式访问这些数据。 并且要清楚,这是在浏览器中发生的所有客户端 - 不涉及任何服务器端代码......
什么是做到这一点,如果它甚至有可能正确的策略是什么?
我不希望最终用户查看网页,要知道任何有关这在他们的浏览回事什么...
谢谢!
如果你不要求你的最终用户做任何形式的认证到您的网站,所以你不能使用为auth方法,你想你的网页能够使用REST API,没有任何其他的干预,则有没有以确保您的REST API万无一失的方法。 如果你想在未经身份验证的浏览器中的数据,那么任何人都可以检索数据。
还要记住,他们总是可以只运行你的网页,并分析数据从你的网页也因此,如果没有认证才能使用本网页,数据已经提供给广大公众。 你不能真正保护它,而无需认证。
有一些事情你可以尝试,使之更加困难的人使用你的REST API,虽然没有一个是万无一失的。 这些仅仅是障碍,而不是安全。
你可以把一个到期令牌到你的网页,包括在Web请求,然后验证它的REST API中的未到期令牌。 这可以防止有人只是用你的REST API直接从其他浏览器页面(他们没有合法的令牌),但不会阻止服务器先取出主机页面,检索标记,然后用它来访问API 。
你可以尝试检查引荐,只有满足Web请求是说从您的网域。 这也并非万无一失,因为引荐可能会被欺骗,但它是一个障碍。
您可以对数据的反应晦涩,以便它不会立即明显如何解释返回的数据(加扰,加密等)。 同样,这仅仅是不会阻止逆向工程自己的代码如何解释响应确定黑客的障碍,但它再次为更多的工作,在你的REST API的休闲用户的方式获得。
什么的REST API的很多要做的就是需要一个accessKey
与每个API调用中使用。 你的网页将有内置的快速键,希望使用您的API(与你的许可)任何外部开发者在申请ACCESSKEY,而你是授予他们(如果你希望他们能够利用你的API)。 然后,您的服务器只允许从批准accessKeys访问请求。 如果您发现有一些流氓使用ACCESSKEY的,你可以在你的服务器关闭使用该ACCESSKEY的。 如果在自己的网页中ACCESSKEY正被某人对你的愿望,那么你就可以改变你把你自己的网页的快速键和撤销先前ACCESSKEY特权。 显然,某些恶意开发人员可以继续抓住ACCESSKEY了自己的网页,但他们必须定期做的,以经常使用的API。 再次,它只是可以通过确定/知识渊博的开发人员克服的障碍,但它是你可以为已经向公众提供数据做到最好。
仅供参考,这里的另一个类似的讨论: 如何限制JSON的访问?
文章来源: How to publish jQuery code accessing a REST api, but have it secured from unauthorized use