保护JavaScript API

保护JavaScript API,javascript,security,rest,Javascript,Security,Rest,我目前正在开发一个小型JavaScript库,它向RESTWeb服务发出请求。由于服务器端需要记录传入请求以测量请求的数量,因此我希望以某种方式保护它。该库与谷歌地图API非常相似。所以我现在的问题是,有没有什么方法比只向库请求添加API密钥更好地保护它?如果可能的话,我如何确保只有“正确”的客户端使用密钥?我想我可以将推荐人的url与一组有效的url进行比较,但这可能是伪造的,对吗?请记住,不可能使用其他人的身份验证方法(facebook、google、twitter等),因为它必须在没有用户

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

干杯,
Daniel

一种体面的RESTful方法是要求客户机提供一个
授权
头,与服务器将接受的某种方案相匹配(参见示例)。鉴于您只希望验证您的客户机是发出请求的客户机,您可能不需要太复杂的授权机制。

是的,推荐人URL可以也将被操纵,不应用于任何与安全相关的内容。定义“安全”的确切含义。API是为任何人都可以访问的公共网站设计的吗?根据定义,你无能为力。任何人都可以随时随地访问数据(公共网站),或者你有某种限制。你不能两者兼得,谢谢。我需要一种在服务器端识别客户端的方法来度量API请求。它不需要是“安全的”。很抱歉,我弄错了。所以你的问题是如何在没有用户明确身份验证的情况下识别用户?看,我不明白这怎么能不被欺骗。如果我在我的库源代码中输入username:password,每个人都可以看到/伪造它,或者不看到?那么您正在创建一个与您的私有服务器通信的公共javascript库,并且您不希望使用您的库以外的客户端发出请求?正如@deceze的评论中提到的,如果这是一个可公开访问的服务器,那么您无法阻止人们向它发出请求,所以您不想测量包括这些请求在内的请求数量吗?正如你提到的,检查推荐人让我觉得只有一个或几个客户你希望收到请求?对不起,我还没有完全理解这个问题。