如何确保只有我的javascript客户端web应用程序向RESTAPI发出请求?

如何确保只有我的javascript客户端web应用程序向RESTAPI发出请求?,javascript,json,security,rest,client-server,Javascript,Json,Security,Rest,Client Server,我正在构建一个web应用程序。它基本上是一个博客 有一个javascript客户端web应用程序和一个实现RESTAPI的服务器 当用户访问我的博客时,我使用javascript函数loadPosts(),它使用Ajax将GET请求发送到服务器上的myblog.com/api/posts端点。服务器返回包含博客文章的JSON数组,客户端的javascript解析JSON并附加HTML以显示博客文章 我遇到的问题是,我觉得我的RESTAPI不安全 请记住,我不希望网站访问者必须登录才能看到博客文章

我正在构建一个web应用程序。它基本上是一个博客

有一个javascript客户端web应用程序和一个实现RESTAPI的服务器

当用户访问我的博客时,我使用javascript函数
loadPosts()
,它使用Ajax将GET请求发送到服务器上的
myblog.com/api/posts
端点。服务器返回包含博客文章的JSON数组,客户端的javascript解析JSON并附加HTML以显示博客文章

我遇到的问题是,我觉得我的RESTAPI不安全

请记住,我不希望网站访问者必须登录才能看到博客文章。然而,似乎任何人都可以在他们的浏览器中键入
myblog.com/api/posts
,并从包含所有博客帖子的服务器获得JSON响应这意味着其他人只需调用我的RESTAPI就可以创建重复的博客并使用我服务器上的数据

因此,我的问题是如何确保只有我的javascript客户端能够调用我的服务器并从RESTAPI获取数据?请注意,我不希望我的博客访问者为了能够查看博客文章而授权


提前谢谢

您可以使用以下方法。

  • 从loadPosts()方法传入客户端令牌。您可以使用AES或其他一些加密技术来加密令牌
  • 解密令牌以验证请求仅来自您的方法
  • 回应请求
  • 甚至这种方法也可能遭到黑客攻击,因为loadPosts()是客户端javascript方法。任何人都可以从他们的银行拿到你的代币

    如果您想要更高的安全性,您可以在每次发出新请求时生成新令牌,并将相关信息(如IP地址等)存储在数据库中。然后,您可以验证api请求中的信息并做出相应的响应

    这完全取决于你想走多远


    我希望这会有帮助

    这个答案对你会有帮助。我想这里讨论的是用户必须登录。除非你对他们进行身份验证,否则你无法阻止别人像浏览器那样发出HTTP请求。即使这样,他们仍然可以窃取你的数据。