假设您希望第三方网站复制并粘贴您提供的JavaScript代码片段。此代码使用AJAX请求访问服务器上的JSON API。您如何实现安全性,以便在将API使用情况与注册并收到API密钥的网站相关联时,您将有效地禁止网站滥用其他网站的API密钥/使用情况?客户端无法实现这种安全性吗?该网站是否必须从服务器访问API?来自客户端访问API的AJAX请求的安全性
回答
您可以检查window.location
或其某些组件。
我能想到的强制执行这种安全措施的唯一方法就是去IP地址,但充其量只是冒险,因为有很多原因会导致设计不好。
这将是服务器端保护javascript文件的安全性。您可以让Web服务提供JavaScript,以便在将文件发送到客户端之前进行检查。
什么IP地址?您无法对客户端IP进行硬编码,因为您和第三方网站都不知道未来用户的IP。 –
@MatthewFlaschen - 您需要知道的事实将是艰难的部分,为什么我认为这可能不是一个完美的解决方案,但这可能是最安全的方法。你在JavaScript中做的任何事情都可能被黑客入侵。 –
@MatthewFlaschen - 获取API密钥的一部分可能是指出可能使用哪些IP地址,因此可以获取此信息。这不会阻止某人在浏览器中复制JavaScript文件并将其放在另一个网站上。我认为这种方法存在缺陷,因为JavaScript天生并不容易确保安全。 –
您还可以在服务器站点上检查请求的HTTP引用者。
我不认为改变JavaScript代码可以伪造它。
但它不能阻止有人从自定义浏览器或某个http客户端发送自定义软件包。
实现服务器端解决方案是可能的,但不是太难,但它会阻止许多网站使用您的脚本。
你可以让他们从自己的服务器
发送请求,或者让他们保持自己的服务器上的键,将其发送给客户(时间间隔后,哈希键改变)...
- 1. JAX-WS客户端|用安全头发送客户端请求
- 2. 请勿使用google api ruby客户端请求离线访问
- 3. 如何访问客户端头请求
- 4. 从客户端发出Instagram API请求是否安全?
- 5. 从WPF客户端访问安全的Web API
- 6. asp.net web api来自silverlight客户端的安全错误
- 7. RESTful客户端中的Ajax请求
- 8. Google-API客户端请求访问令牌
- 9. 发送ajax的安全性请求
- 10. 在WCF服务端编辑来自客户端的SOAP请求
- 11. 来自简单终端客户端的泽西POST请求
- 12. AJAX请求的安全
- 13. 添加客户端iframe的安全性
- 14. 延迟的客户端请求可否安全?
- 15. 客户端验证和ajax请求
- 16. 来自iPhone的安全SSL ASIHTTP请求
- 17. 快车 - 访问客户端的IP时的index.html请求
- 18. 客户端ID和客户端访问foursquare API的秘密
- 19. JAX-RS客户端API异步请求
- 20. 安全问题:来自单个用户帐户的过多的Drupal请求
- 21. ASP.Net的Web API客户端访问
- 22. 限制客户端的REST API访问
- 23. 来自客户端的web api认证
- 24. 节点api不返回数据给客户端ajax请求
- 25. 来自客户端的Venmo API调用。访问控制允许来源?
- 26. 如何接受来自客户端的很多请求
- 27. 来自Rails请求头的客户端IP地址
- 28. IdentityServer3通过来自客户端请求上下文的Request.ClientCertificate
- 29. WCF来自同一客户端的多个请求
- 30. 来自Windows NPS服务器的Linux客户端请求证书
所以之前哈希键你是说将AJAX请求中的window.location结果传递给我的服务器? –
那么,由于跨域限制,您无法使用真正的AJAX。因此,通常情况下,网站会提供包装API(例如https://www.google.com/jsapi?key=INSERT-YOUR-KEY),它会执行JSONP调用。该脚本也可以查看'window.location'。然后,问题是网站是否尝试直接执行JSONP调用。 –
是的,没有什么能阻止网站改变脚本,或者根据它看到其他网站制作JSONP调用的方式发送虚假信息...... –