Javascript 如何防止用户使用浏览器进入调试模式

Javascript 如何防止用户使用浏览器进入调试模式,javascript,html,debugging,google-chrome,browser,Javascript,Html,Debugging,Google Chrome,Browser,这听起来可能很傻,但作为一名开发人员,我每天都在使用Chrome中的调试器来测试我的web应用程序,但尽管这些工具对我们的开发人员来说很有价值,但它也可能会被用户用来对付我们,因为他们想破坏我们的系统 您可能知道,使用调试器重新启用以前设置为禁用的按钮或更改隐藏标记或变量的值相当容易。然后,就可以很容易地发布一个不应该发送的带有伪造值的表单 这是一种防止在生产环境中显示页面时使用所有调试工具的方法吗 某种可以添加到网页的元标记,或者其他什么 我知道我可以修改我的JS脚本,但是还有其他方法吗 谢谢

这听起来可能很傻,但作为一名开发人员,我每天都在使用Chrome中的调试器来测试我的web应用程序,但尽管这些工具对我们的开发人员来说很有价值,但它也可能会被用户用来对付我们,因为他们想破坏我们的系统

您可能知道,使用调试器重新启用以前设置为禁用的按钮或更改隐藏标记或变量的值相当容易。然后,就可以很容易地发布一个不应该发送的带有伪造值的表单

这是一种防止在生产环境中显示页面时使用所有调试工具的方法吗

某种可以添加到网页的元标记,或者其他什么

我知道我可以修改我的JS脚本,但是还有其他方法吗


谢谢

不,这是不可能的。正如John Conde所说,您应该使用服务器端验证来防止无效输入。即使没有您所称的“调试器”,用户也可以将请求(带有虚假数据)获取/发布到您的表单提交URL。

JavaScript验证是为了改善用户体验,而不是保护您的数据;它在客户端上运行,因此恶意客户端总是可以更改它。发送到服务器的任何内容都需要由服务器进行验证,客户端不能干扰或绕过验证


除调试器外,还有一些工具(如)可用于向服务器发送任何GET或POST请求。作为一名开发人员,cURL在让服务器相互通信方面非常方便(我使用它的时候,这是因为我的数据库位于与UI不同的web服务器上),但这意味着您的服务器必须能够安全地处理发送给它的任何请求,甚至那些你的JavaScript不允许的。我有两个想法将其限制在80%

  • 禁止右键单击
  • 使用setInterval函数监视html标记的更改。如果更改回原始值或将网站重定向到任何其他地址,例如google.com

  • 您不应该依赖JavaScript进行安全性或验证。您应该始终进行服务器端验证,以确保从用户处接收的数据是您期望的格式。^+1另外,您可以完全禁用javascript并绕过所有这些。但据我所知,使用JavaScription无法控制这样的用户浏览器在客户端保证用户不启用禁用按钮的唯一方法是首先不提供按钮。(服务器端,您可以拥有会话信息,包括该按钮是否设置为客户机启用或禁用。)我完全同意这一点,这就是我每天都在做的事情,但我认为他们的标签可能会阻止用户执行调试工具。@RUJordan的建议将非常激进,并将导致非常无聊的用户体验……当然,扰乱我的JS也是一个好主意,可以防止用户理解页面背后的机制,这将减轻黑客的努力。。。