【问题标题】:Is javascript alert() not secure?javascript alert() 不安全吗?
【发布时间】:2016-06-04 21:20:43
【问题描述】:

我读了一本关于 JavaScript 安全的书,书中说在 Web 应用程序开发中使用 alert() 函数并不安全。

我在书中找不到任何理由。

为什么alert() 不安全?

【问题讨论】:

  • 我相信安全问题是指无限警报,因为窗口警报框将阻止用户对浏览器的所有操作,直到用户单击“确定”。如果出现无限警报,用户将无法正常关闭浏览器。一些老版本的IE默认会屏蔽alert box。
  • 你有任何参考或确切的报价吗?

标签: javascript security web browser


【解决方案1】:

不确定这是否是原因,但 alert() 是全局范围内的函数,易于访问并且可以被覆盖。在我绝育它并确认()以防止在寻找错误时在屏幕上弹出警报后,我更绝望地尝试进行一些调试。

window.alert = function(msg){
    console.log(msg); 
}

window.confirm = function(msg){
    console.log(msg); 
    return true; 
}

【讨论】:

  • 每一个函数都可以用js重写。
  • 非常正确,一切都可以被覆盖/读取,无论它在 JavaScript/HTML 中的深度或混淆程度如何,你唯一能做的就是让它变得更难。有些人没有意识到这些内置函数实际上并不特殊,只是全局范围内的函数。
  • 重点是,通过覆盖这个全局函数,没有人可以破解系统
【解决方案2】:

这是一个错误声明。 Alert 只是在客户端与用户进行消息通信的基本功能。除非有东西提交到服务器并在那里处理,否则我们不需要担心安全性。即使通过覆盖此功能,也没有人可以破解任何东西。快乐alerting !!

【讨论】:

  • 您无需担心服务器端的安全性。尽管如此,如果功能中存在漏洞(不太可能),客户端计算机可能会被黑客入侵/感染病毒等,并且至少用户可能会被许多警报所困扰;你应该担心这些。
  • @Bergi 在这种特殊情况下,我确信 PO 从开发人员的角度担心使用警报。这就是他在 SO 中发布问题的原因。开发人员有责任不显示无限警报。但是警报功能是无辜的,无害的。你怎么看?
【解决方案3】:

只有当您输入敏感信息(如某些 id 或密钥)时,它可能会造成问题,否则我看不到任何问题。 OSWAP 将其视为中等优先级漏洞,但大多数情况下是误报。

【讨论】:

    【解决方案4】:

    我想从官方来源再添加一个答案。他们在Chromium policy on JavaScript dialogs 中声明

    虽然名为 alert()、confirm() 和 prompt() 的窗口对象适合 当时的 JavaScript,他们的同步 API 是有问题的 现代浏览器。因为 JavaScript 引擎需要暂停,直到 获得用户响应后,JavaScript 对话框是应用模式的。和 因为对话框是应用程序模式的,所以它们通常(不幸的是) 习惯了harm our users

    因此,Chromium 团队强烈建议您不要使用 JavaScript 对话框。

    【讨论】:

      【解决方案5】:

      据我所知,alert() 可用于跨站点脚本 (XSS) 攻击,但大多数 Web 应用程序防火墙现在都具备检测此类攻击的能力。

      在我看来,不使用 alert() 并不能使我们的应用程序安全。 alert() 只是演示 XSS 攻击的简单方法之一。还有其他方法,例如记录击键、窃取会话 cookie 等。

      本页详细解释 XSS 攻击。

      https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)

      希望这会有所帮助!

      【讨论】:

      • alert 如何启用 XSS 攻击?
      • 我不是说 alert() 会启用 xss 攻击,但它可以用来演示 xss 攻击,即使这样做不会造成太大伤害。例如,在下面的帖子中,您可以在“阻止单词“脚本””部分看到相同securestate.com/blog/2012/01/30/… 的演示
      • 嗯,每个函数都可以用于演示,但这并不能说明alert 是否安全。
      猜你喜欢
      • 2011-08-20
      • 2012-06-21
      • 1970-01-01
      • 2023-03-26
      • 2012-12-13
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      • 2012-11-12
      相关资源
      最近更新 更多