Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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 如何确定请求者是我的web应用程序_Javascript_Node.js_Authentication - Fatal编程技术网

Javascript 如何确定请求者是我的web应用程序

Javascript 如何确定请求者是我的web应用程序,javascript,node.js,authentication,Javascript,Node.js,Authentication,我有一个web应用程序,我不希望其他人调用我的端点并在我的网站之外使用提供的JSON数据。我的web应用程序是否有一些独特的东西(或者创建一些没有人能在devtools上看到的东西)可以通过请求头发送?由于服务器和应用程序位于同一个项目中,CORS在这方面有帮助吗 fetch(url{ 方法:“GET”, 海迪尔斯:{ //我的网站的独特之处 } }) 您可以: 创建一个唯一的会话ID(在服务器上),该ID随应用程序主页一起发送,然后用于与应用程序相关的所有呼叫 使用SSL确保唯一会话ID不会

我有一个web应用程序,我不希望其他人调用我的端点并在我的网站之外使用提供的JSON数据。我的web应用程序是否有一些独特的东西(或者创建一些没有人能在devtools上看到的东西)可以通过请求头发送?由于服务器和应用程序位于同一个项目中,CORS在这方面有帮助吗

fetch(url{
方法:“GET”,
海迪尔斯:{
//我的网站的独特之处
}
})
您可以:

  • 创建一个唯一的会话ID(在服务器上),该ID随应用程序主页一起发送,然后用于与应用程序相关的所有呼叫
  • 使用SSL确保唯一会话ID不会从传输中的HTTP通信中被盗
  • 即使使用有效的会话ID(例如,Z时间内只有X个来自IP Y的请求),也会对响应进行速率限制,因为恶意参与者可以使用类似浏览器的进程连接到您的应用程序,并通过该会话对其进行挖掘
  • (可选)您可以将其锁定为原始请求IP(但请注意,有时客户端会更改IP,例如,在快速移动的火车上)
各种身份验证系统为您执行上述操作

除了您可以在主页中提供的服务和后续请求中的要求之外,您无法阻止坏角色通过非浏览器进程查询您的端点

但是,如果您的用户没有经过身份验证(您说过没有登录),请注意,一个动机充分的恶意攻击者将能够使用僵尸网络绕过上述所有问题,在您看来就像普通用户一样。如果你需要缓解这种情况(你无法阻止它),你需要让注册用户的概念,让他们的注册得到验证(从仅仅回复电子邮件中的链接——很容易被一个糟糕的参与者击败——或者要求你这边的人必须验证的东西),然后让他们登录。再说一次,即使是缓解措施,也会进一步提高标准,而不是预防措施

CORS在这里有用吗

不,恰恰相反。但是,在这里,这是很有用的,这意味着您不必担心其他网站通过ajax直接在浏览器中使用您网站的数据。(您可以使用它来允许他们这样做。)

您可以:

  • 创建一个唯一的会话ID(在服务器上),该ID随应用程序主页一起发送,然后用于与应用程序相关的所有呼叫
  • 使用SSL确保唯一会话ID不会从传输中的HTTP通信中被盗
  • 即使使用有效的会话ID(例如,Z时间内只有X个来自IP Y的请求),也会对响应进行速率限制,因为恶意参与者可以使用类似浏览器的进程连接到您的应用程序,并通过该会话对其进行挖掘
  • (可选)您可以将其锁定为原始请求IP(但请注意,有时客户端会更改IP,例如,在快速移动的火车上)
各种身份验证系统为您执行上述操作

除了您可以在主页中提供的服务和后续请求中的要求之外,您无法阻止坏角色通过非浏览器进程查询您的端点

但是,如果您的用户没有经过身份验证(您说过没有登录),请注意,一个动机充分的恶意攻击者将能够使用僵尸网络绕过上述所有问题,在您看来就像普通用户一样。如果你需要缓解这种情况(你无法阻止它),你需要让注册用户的概念,让他们的注册得到验证(从仅仅回复电子邮件中的链接——很容易被一个糟糕的参与者击败——或者要求你这边的人必须验证的东西),然后让他们登录。再说一次,即使是缓解措施,也会进一步提高标准,而不是预防措施

CORS在这里有用吗



不,恰恰相反。但是,在这里,这是很有用的,这意味着您不必担心其他网站通过ajax直接在浏览器中使用您网站的数据。(您可以使用它来允许他们这样做。)

询问用户名和密码?@MatJ该web应用程序没有身份验证系统(没有用户),只是一个简单的web应用程序,这并不简单。最简单的方法是在你的web应用中设置一个静态id,然后你的服务器验证这个id。@user121548789,添加一个,这就是你的问题的解决方案。我认为你应该使用一些身份验证,比如承载令牌,从ui访问web api。询问用户名和密码?@MatJ web应用没有身份验证系统(没有用户)只是一个简单的web应用程序,它不是微不足道的。最简单的方法是在你的web应用程序中设置一个静态id,然后你的服务器验证这个id。@user121548789,添加一个,然后,这就是你问题的解决方案。我认为你应该使用一些身份验证,如持票人令牌,从ui访问web api。创建一个唯一的会话id,与应用程序主页一起发送“…在前端创建一个唯一的ID是一个好主意,因为所有的代码都可以通过浏览器获得?@user121548789-你不会在前端创建它,你应该在服务器上创建它,并与主应用程序的HTML一起提供。这就是为什么我说“随主页一起发送”,然后有人可以调用端点并制作自己的令牌right@user121548789-是的,请看关于速率限制的子弹,以及关于僵尸网络的段落。是的,听起来很棒,我可能会同意。。。感谢您的帮助创建一个与应用程序主页一起发送的唯一会话ID“…在前端创建一个唯一ID是一个好主意,因为所有代码都可以通过浏览器获得吗?@user121548789-您不会在前端创建它,而是在服务器上创建它,并与主应用程序的HTML一起提供。这就是我说的原因”然后有人可以直接调用端点并制作自己的令牌right@user121548789-是的,请看关于速率限制的项目符号和关于僵尸网络的段落。是的,听起来很棒,我可能会同意……谢谢你的帮助