我有一个我只想为某些网站提供的 JSON Web 服务。这是一项使用 JSONP 通过 JavaScript 调用的服务。我将如何防止(或充其量使其更难)未经授权的网站访问它?要求用户/密码是行不通的,因为这在 JavaScript 中是显而易见的。
示例:我在 domain.com 的 web 服务提供天气信息,我只希望 website.com 和 pages.com 能够访问它。但是由于 Web 服务是通过 JavaScript 访问的,所以lazywebsite.com 可以只查看网站/网页的源代码并复制/粘贴其 JavaScript 代码。
到目前为止我的想法:
- 使用 API 密钥并记录
HTTP_REFERER
访问服务的位置。这并不理想,因为HTTP_REFERER
不可靠。 - 让 website.com/webpage.com 使用我提供的算法在服务器端生成唯一的密钥,将其保存在会话中,并将其用作访问 Web 服务的密钥。这样,令牌只为该特定访问者注册,并且 JS 不能被复制/粘贴。然后问题转移到 website.com/webpage.com 保护他们生成唯一密钥的页面。
有没有更好的解决方案?