英语不是我的母语。我会尽力解释自己。
我正在创建一个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。
答案 0 :(得分:0)
将api密钥放在他们的网站上可能会遇到的问题是,任何人都可以查看和使用它。在他们用来托管其站点的系统上使用Process
环境变量。您可以使用以下资源获取信息:https://hackernoon.com/how-to-use-environment-variables-keep-your-secret-keys-safe-secure-8b1a7877d69c