如何保护javascript变量在发布到服务器时不被操纵?

如何保护javascript变量在发布到服务器时不被操纵?,javascript,asp.net,security,Javascript,Asp.net,Security,我正在ASP.NET中构建一个简单的mvc应用程序,我希望将会话的所有用户数据保存在客户端,即每次加载页面时,变量从零开始重新启动(例如,游戏中的点数)。然后,这些数据将被发送到服务器端(作为post)进行处理,然后返回到客户端。我这样做是为了不使用数据库而获得性能 但是,如何确保这些数据在发送到服务器之前不会被操纵?对不起,我对这一切都不熟悉 谢谢您不能这样做,您最好在服务器端验证它们,并确保它们不包含任何恶意字符,您还可以使用哈希来验证变量是否未被手动修改,尽管他们仍然可以更改它。当页面发回

我正在ASP.NET中构建一个简单的mvc应用程序,我希望将会话的所有用户数据保存在客户端,即每次加载页面时,变量从零开始重新启动(例如,游戏中的点数)。然后,这些数据将被发送到服务器端(作为post)进行处理,然后返回到客户端。我这样做是为了不使用数据库而获得性能

但是,如何确保这些数据在发送到服务器之前不会被操纵?对不起,我对这一切都不熟悉


谢谢

您不能这样做,您最好在服务器端验证它们,并确保它们不包含任何恶意字符,您还可以使用哈希来验证变量是否未被手动修改,尽管他们仍然可以更改它。

当页面发回时,
没有一种方法可以保护或保留
JavaScript
变量的值

您可以在发送给客户端的数据中嵌入一个,以便服务器可以在客户端稍后发送回数据时验证该数据是否没有更改。但你也必须担心这样的事情——即使恶意客户端无法更改数据,它也可以发送几次重新加载前收到的旧数据


您说您试图通过不使用数据库来获得性能优势,但您实际评估过数据库性能并发现它太慢了吗?这听起来像是基于一个毫无根据的假设为应用程序选择了一个奇怪的设计。

来自客户端的所有东西都可以被操作,包括javascript变量、表单变量等


始终将来自浏览器的任何内容视为不可信。对于每个HTTP请求,始终检查调用方是否有权访问所请求的资源。这是所有web应用程序的基本规则。它通常是在过滤器中完成的,因此,它并没有那么糟糕。

你是对的,这是一个没有根据的假设。正如我所说,这对我来说是全新的。但是我想既然我不需要将数据存储在数据库中(每次在客户端都会重新初始化这些信息),为什么我要使用一个呢?如果变量保留在客户端,则处理速度应该比处理服务器端的所有数据更快。但由于我不希望这些数据被操纵,我更喜欢使用数据库。也许这根本不会影响性能。谢谢