API身份验证如何仅适用于javascript上的公共密钥?

时间:2019-05-24 19:01:08

标签: javascript api public-key

英语不是我的母语。我会尽力解释自己。


我正在创建一个API,供客户端通过Javascript使用。客户应在他的网站上添加以下内容:

<script>
    var my_api = { 
        public_key: "123456"
    };
</script>
<script async src="https://api.example.com/v1/init.js"></script>

那么...我该如何使用公共密钥来验证客户的网站?

我知道我可以获取引荐来源并将其与数据库中的键进行比较,但是:

(a)如果引荐来源网址可能是伪造的,则公用密钥将不再有用,因为它已经公开

还有(b)如果引用者不能被伪造,为什么我要使用公共密钥?引荐者不是很认真吗?

如果有人知道密钥,我不能要求客户端加密某些东西以验证他是否拥有正确的密钥...

过去我只创建了同时具有私钥和公钥(或仅具有私钥)的API。

最后,我希望通过复制/粘贴几行JS代码将其全部安装在客户的网站上(这就是为什么我只想使用公共密钥的原因)。

我知道这是可能的,因为这就是Google Ads的工作方式,我只需要帮助就可以找到解决方法。


注意:我在论坛上搜索了其他主题,但找不到任何答案,只是与SSH和nodeJS有关的东西。我正在用PHP和纯JS开发一个简单的API。

1 个答案:

答案 0 :(得分:0)

将api密钥放在他们的网站上可能会遇到的问题是,任何人都可以查看和使用它。在他们用来托管其站点的系统上使用Process环境变量。您可以使用以下资源获取信息:https://hackernoon.com/how-to-use-environment-variables-keep-your-secret-keys-safe-secure-8b1a7877d69c