【问题标题】:How to prevent users to go in debug mode with their browser如何防止用户使用浏览器进入调试模式
【发布时间】:2014-01-02 16:18:35
【问题描述】:

这听起来可能很傻,但是作为开发人员,我每天都在使用 Chrome 中的调试器来测试我的 Web 应用程序,但是尽管这些工具对我们开发人员很有价值,但它也可能会被用户用来对付我们。弄乱我们的系统。

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

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

可以添加到网页的某种元标记,还是其他?

我知道我可以打乱我的 JS 脚本,但还有其他方法吗?

谢谢

【问题讨论】:

  • 您不应该依赖 JavaScript 来实现安全性或验证。您应该始终进行服务器端验证,以确保您从用户那里收到的数据是您期望的格式。
  • ^ +1 加上你可以简单地完全禁用 javascript 并规避所有这些。但据我所知,没有办法像使用 javascript 那样控制用户浏览器
  • 在客户端保证用户不启用禁用按钮的唯一方法是首先不提供该按钮。 (在服务器端,您可以获得会话信息,包括该按钮是否设置为客户端启用或禁用。)

标签: javascript html debugging google-chrome browser


【解决方案1】:

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

【讨论】:

  • 完全同意这一点,这就是我每天都在做的事情,但我认为它们可能是阻止用户执行调试工具的标签。 @RUJordan 的提议将非常激进,并会导致非常无聊的用户体验......
  • 当然,对我的 JS 进行加扰也是一个好主意,可以防止用户理解页面背后的机制,从而减轻其黑客攻击...
【解决方案2】:

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

除了调试器之外,还有诸如cURL 之类的工具可用于向您的服务器发送任何 GET 或POST 请求。作为开发人员,cURL 非常方便让服务器相互通信(我使用它的时候,是因为我的数据库与我的 UI 位于不同的 Web 服务器上),但这意味着您的服务器必须能够安全地处理发送给它的任何请求,即使是您的 JavaScript 不允许的请求。

【讨论】:

    【解决方案3】:

    我有 2 个想法将其限制为 80%。

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

    【讨论】:

      猜你喜欢
      • 2018-04-30
      • 2019-02-18
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      相关资源
      最近更新 更多