【问题标题】:Can javascript codes be modified by client side? [duplicate]客户端可以修改javascript代码吗? [复制]
【发布时间】:2020-08-27 12:51:41
【问题描述】:

我有收集用户数据的表格。使用 Ajax 和 jQuery,我将此数据传递到 PHP 页面以插入数据库。问题是我在脚本标签中有一些从表单字段获取值的javascript代码,并且有一些与之相关的业务逻辑。我有一些隐藏字段,其值由 javascript 代码根据其他字段值自动设置。如果有人编辑此代码并更改此值(假设添加了一些垃圾值)并点击提交,这将导致错误的值错误的值被插入到数据库中。如何使此代码不可编辑?

【问题讨论】:

  • 你不能。您发布的任何内容都是可以更改的
  • 永远不要完全相信来自浏览器的任何东西。插入数据库时​​始终执行服务器端验证并使用准备好的语句/参数绑定。
  • Javascript 在客户端运行,您无法阻止人们对其进行编辑。这就是为什么您通常对 UX 进行前端验证,并进行服务器验证以确保进入数据库的数据不是恶意的。

标签: javascript php


【解决方案1】:

如何使这段代码不可编辑?

你不能。客户端甚至根本不需要使用您的代码,他们可以根据需要向您的服务器发送任何 HTTP 请求。

基本上,您看错了。与其试图阻止客户端在他们的计算机上做某事,你需要阻止他们在你的服务器上做某事。在服务器端代码中执行任何敏感操作之前,请验证请求。永远不要隐式信任来自客户端的请求,始终验证是否允许用户执行操作

【讨论】:

  • 我明白了。但是假设我有 JS 代码,如果他不活动 10 分钟后将注销用户(没有鼠标悬停没有 keyup)。如果用户可以将其修改为 100 分钟,那么这超出了代码的目的。
  • @RanjeetThorat:客户端代码用于提供用户体验。服务器端代码是安全发生的地方。如果用户的认证在服务器端已经过期,但是用户选择忽略客户端的那个逻辑,那么用户的下一个需要认证的请求就会导致错误,而这个错误完全是用户自己造成的。这没有问题。唯一的问题是如果您的服务器端代码强制执行安全性并假定用户是有效的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2021-07-18
  • 1970-01-01
  • 2011-10-22
  • 1970-01-01
相关资源
最近更新 更多