Javascript 客户端是否有安全的方法将缓存数据发送回服务器?

Javascript 客户端是否有安全的方法将缓存数据发送回服务器?,javascript,caching,web,server,client,Javascript,Caching,Web,Server,Client,我有一个站点,其中一些处理是用javascript在客户端完成的。它工作得很好,但我觉得同样的事情不应该一次又一次地做,即使它只影响客户机,所以处理后的数据可以由客户机发送回服务器,稍后其他客户机可以获得缓存的数据,所以他们不必自己做处理 问题是站点上没有任何类型的身份验证,它可以自由访问,因此恶意客户端可能会将恶意缓存数据发送回服务器 是否有一些聪明的方法来确保服务器只存储来自客户端的缓存数据?我能想到的唯一一件事是比较从客户端接收的数据,并仅当(比如)10个客户端发回相同的值时,才将一段缓存

我有一个站点,其中一些处理是用javascript在客户端完成的。它工作得很好,但我觉得同样的事情不应该一次又一次地做,即使它只影响客户机,所以处理后的数据可以由客户机发送回服务器,稍后其他客户机可以获得缓存的数据,所以他们不必自己做处理

问题是站点上没有任何类型的身份验证,它可以自由访问,因此恶意客户端可能会将恶意缓存数据发送回服务器

是否有一些聪明的方法来确保服务器只存储来自客户端的缓存数据?我能想到的唯一一件事是比较从客户端接收的数据,并仅当(比如)10个客户端发回相同的值时,才将一段缓存数据标记为有效。当然,这不是一个完美的解决方案,但它可以保护大多数攻击者


还有比这更好的方法吗

为什么不能在服务器端处理此数据并将其发送到所有客户端?如果服务器不使用任何身份验证,您如何知道数据是从受信任的客户端接收的?@alexmac该网站使用某些web API进行处理,这些API没有客户端限制,但它们的服务器端限制非常低。该站点有数十万个页面,因此处理客户端是有意义的,因为这样我就不会达到api限制。通过从服务器上执行同样的操作,我会很快达到极限,而且由于网站经常更新,因此也经常需要重新处理数据。没有身份验证的网站并不意味着你自己的后端应该接受来自“流氓”客户端的请求,如果这样做的话,你的网站设置有问题。另外,您能否澄清每个请求由这些外部API返回的数据量?如果由于存储原因,将它们保存在您自己的数据库中是没有意义的,那么让前端来处理它。@A_uuuuuu正如问题所述,处理是在客户机上完成的,因此我无法轻松检查发送回来的数据是否来自我的网页或某人编写的恶意脚本。客户端数据不是很大,它可以留在客户端,我只是想知道如果它被发送回服务器进行缓存,是否有一种聪明的方法可以从我的客户端知道它是什么。主要的一点是通过不重做相同的计算来加快客户机的速度,这样其他客户机就可以使用以前的客户机所做的结果。但为此,我需要将缓存的数据发送到服务器,并确保它是有效的数据。这就是问题所在,如果您在一个承诺中调用外部API-您可以在第一个承诺中添加另一个承诺,用新数据向您的DB发送PUT请求-我不知道如何在客户机中解决这个问题?如果这些API调用中没有那么多数据,您应该能够在后端解析这些数据,看看它们是否符合您的预期?为什么不能在服务器端处理这些数据并将其发送给所有客户端?如果服务器不使用任何身份验证,您如何知道数据是从受信任的客户端接收的?@alexmac该网站使用某些web API进行处理,这些API没有客户端限制,但它们的服务器端限制非常低。该站点有数十万个页面,因此处理客户端是有意义的,因为这样我就不会达到api限制。通过从服务器上执行同样的操作,我会很快达到极限,而且由于网站经常更新,因此也经常需要重新处理数据。没有身份验证的网站并不意味着你自己的后端应该接受来自“流氓”客户端的请求,如果这样做的话,你的网站设置有问题。另外,您能否澄清每个请求由这些外部API返回的数据量?如果由于存储原因,将它们保存在您自己的数据库中是没有意义的,那么让前端来处理它。@A_uuuuuu正如问题所述,处理是在客户机上完成的,因此我无法轻松检查发送回来的数据是否来自我的网页或某人编写的恶意脚本。客户端数据不是很大,它可以留在客户端,我只是想知道如果它被发送回服务器进行缓存,是否有一种聪明的方法可以从我的客户端知道它是什么。主要的一点是通过不重做相同的计算来加快客户机的速度,这样其他客户机就可以使用以前的客户机所做的结果。但为此,我需要将缓存的数据发送到服务器,并确保它是有效的数据。这就是问题所在,如果您在一个承诺中调用外部API-您可以在第一个承诺中添加另一个承诺,用新数据向您的DB发送PUT请求-我不知道如何在客户机中解决这个问题?如果这些API调用中没有那么多数据,那么您应该能够在后端解析这些数据,看看它们是否符合您的期望?