Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jwt保护api密钥,无需身份验证_Javascript_Node.js_Express_Jwt - Fatal编程技术网

Javascript 使用jwt保护api密钥,无需身份验证

Javascript 使用jwt保护api密钥,无需身份验证,javascript,node.js,express,jwt,Javascript,Node.js,Express,Jwt,是否有任何方法可以使用jwt或任何其他方法保护api响应,但不需要身份验证(登录页面),以便只有所有者站点可以访问api。 我在google上看到的所有方法和教程都是基于jwt的登录系统 例如,如果我有rest api,如: router.get('/api/posts', (req, res) => { var body = ... // get some via database res.json(body); }) 然后我只想在我的网站上使用它:example.com。最重要的

是否有任何方法可以使用jwt或任何其他方法保护api响应,但不需要身份验证(登录页面),以便只有所有者站点可以访问api。 我在google上看到的所有方法和教程都是基于jwt的登录系统

例如,如果我有rest api,如:

router.get('/api/posts', (req, res) => {
 var body = ... // get some via database
 res.json(body);
})

然后我只想在我的网站上使用它:
example.com
。最重要的是,没有身份验证(登录系统)

首先,每个API请求都必须通过
https

然后,您可以通过为每个用户提供一个必须在每次请求时发送的唯一令牌来“保护”特定于用户的API。 也可以检查请求API的用户的主机或用户代理,并且只允许特定的自定义用户代理(取决于您的需要)

除此之外: 如果用户登录到同一服务器时需要JSON响应,则可以检查是否设置了给定的cookie或会话,并且是否可以与该特定用户相关

如果对该API执行服务器到服务器请求,则可以检查服务器主机名是否有效,以及是否与允许访问的主机名匹配

您还可以使用加密来保护API响应(这里也可以:根据您的需要)。如果这是真的,您可以使用类似于GPG/PGP的私钥/公钥加密。当然,应该只允许有权访问API的人解密响应

如果您不关心是否有人可以找到您的API路径,那么GUID(全局唯一标识符)可能是一个选项。GUID URL可能如下所示:


example.com/api/v1/c9a646d3-9c61-4cb7-bfcd-ee2522c8f633

使用GUID作为URL参数可能是您要查看的路由。我不明白,只需在http请求中传递某种标识符作为标头,然后在APIA上检查它GUID是生成的唯一密钥。因此,如果您想使用某些东西而不是登录,可以生成GUID并将其用作“密钥”。也就是说,有人会点击网址“www.yoursite.com/guidgoesher”。guid是解锁数据的键。根据这篇文章的说法,只需确保没有其他人获得不应该看到数据的guid。不要依赖自定义标题。我有一个网站,它只使用json api,没有用户登录。然后为每个允许访问页面的用户设置一个cookie。不知何故,您需要知道是否允许用户查看API响应,即使没有登录。可能是通过检查IP地址或主机名?这篇文章提到不要依赖IP地址:@AshishRawat我提到了IP地址之外的其他方法。这完全取决于您希望如何识别允许用户查看API响应。您可以检查用户是否最近(