【问题标题】:Securing JavaScript API保护 JavaScript API
【发布时间】:2014-08-27 15:02:29
【问题描述】:

我目前正在开发一个小型 JavaScript 库,该库向 REST Web 服务发出请求。由于服务器端需要记录传入请求以测量请求数量,我想以某种方式保护它。该库与 Google Maps API 非常相似。所以我现在的问题是,有什么方法可以更好地保护它,然后只是将 API 密钥添加到库请求中?如果可能的话,我如何确保只有“正确”的客户使用密钥?我想我可以将引荐来源网址与一组有效网址进行比较,但这可以被欺骗吗?请记住,使用其他身份验证方法(facebook、google、twitter 等)是不可能的,因为它必须在没有用户输入的情况下工作。

干杯, 丹尼尔

【问题讨论】:

  • 是的,引荐来源网址可以并且将会被操纵,并且不应用于任何与安全相关的事情。
  • 定义“安全”的确切含义。 API 是否适用于任何人都可以访问的公共网站?然后根据定义,您无能为力。任何人都可以随时随地访问数据(公共网站),或者您有某种限制。你不能两者兼得。
  • 谢谢。那么我需要一种方法来识别服务器端的客户端来测量 API 请求。它不需要是“安全的”。对不起,如果我把它弄混了。
  • 那么您的问题是如何在没有明确身份验证的情况下识别用户?见stackoverflow.com/questions/15966812/…

标签: javascript security rest


【解决方案1】:

一个不错的 RESTful 方法是要求客户端提供 Authorization 标头,匹配您的服务器将接受的某些方案(参见 Basic Access authentication 作为示例)。由于您只想验证您的客户是发出请求的人,因此您可能不需要太复杂的授权机制。

【讨论】:

  • 我看不出这怎么不能被欺骗。如果我将用户名:密码放在我的库源代码中,每个人都可以看到/伪造它吗?
  • 所以您正在创建一个与您的私人服务器通信的公共 javascript 库,并且您不希望使用您的库的客户端以外的客户端发出请求?正如@deceze 的评论中提到的,如果这是一个可公开访问的服务器,那么您无法阻止人们向它发出请求,那么您不想测量包括这些请求的数量吗?正如您提到的检查推荐人,这让我认为您希望收到的请求只有一个或几个客户?抱歉,我还没有完全理解这个问题。
猜你喜欢
  • 2018-07-17
  • 1970-01-01
  • 2012-10-03
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
  • 2023-03-02
  • 2015-10-15
  • 1970-01-01
相关资源
最近更新 更多