如果您不要求最终用户对您的站点进行任何类型的身份验证,因此您不能将其用作身份验证方法,并且您希望您的网页能够在没有任何其他干预的情况下使用 REST API,那么不是保护 REST API 的万无一失的方法。如果您想在未经身份验证的浏览器中获取数据,那么任何人都可以检索该数据。
还要记住,他们总是可以只运行您的网页并从您的网页中解析数据,因此,如果使用此网页不需要身份验证,则数据已经可供公众使用。如果不要求身份验证,您就无法真正保护它。
您可以尝试一些方法来让人们更难使用您的 REST API,但没有一种方法是万无一失的。这些只是障碍,而不是安全。
您可以将过期令牌放入您的网页,将其包含在 Web 请求中,然后在 REST API 中验证它是未过期的令牌。这可以防止某人直接从另一个浏览器页面使用您的 REST API(他们没有合法令牌),但不会阻止服务器首先获取主机页面、检索令牌然后使用它来访问 API .
您可以尝试检查引荐来源网址并仅满足来自您的域的网络请求。这也不是万无一失的,因为引用者可以被欺骗,但它是一个障碍。
您可以使数据响应模糊不清,这样就不会立即明白如何解释返回的数据(加扰、加密等)。同样,这只是一个障碍,不会阻止坚定的黑客对您自己的代码如何解释响应进行逆向工程,但这又是更多的工作阻碍了您的 REST API 的临时用户。
许多 REST API 所做的是需要一个accessKey
与每个 API 调用一起使用。您的网页将内置一个 accessKey。任何希望使用您的 API(在您的许可下)的外部开发人员都申请一个 accessKey,然后您将其授予他们(如果您希望他们能够使用您的 API)。然后,您的服务器只允许来自批准的 accessKeys 的访问请求。如果您发现某个 accessKey 被恶意使用,您可以在您的服务器上关闭该 accessKey 的使用。如果您自己网页中的 accesskey 被他人违背您的意愿使用,那么您可以更改您在自己网页中放置的 accessKey 并撤销之前 accessKey 的权限。显然,一些流氓开发人员可以不断地从您自己的网页中获取 accessKey,但他们必须定期这样做才能定期使用您的 API。再次,它'
仅供参考,这是另一个类似的讨论:如何限制 JSON 访问?