我是一名具有一定安全知识的网络开发人员,我正在与专业安全专家讨论在某种情况下它是否容易受到CSRF攻击。让我来解释一下:
我有一个典型的更改密码表单,我会询问旧密码和新密码两次。他说它可以被攻击,而我说它不会。为什么?在这种情况下,攻击者可以欺骗用户使用新密码提交表单(典型的CSRF攻击(,但他仍然需要知道旧密码,因此攻击永远不会发生。
我想他只是在关注页面上的那本书,上面写着"所有密码表单都必须有CSRF保护"。在与他们争论了两周后,我会放一个CSRF代币(毕竟,我会得到报酬(,但我仍然认为没有必要(当然,比申请中的任何其他输入表格都少(。
你觉得怎么样?。我想知道我是否错了,为什么
您的推理假设您的用户有良好的密码习惯。事实上,大多数用户没有。他们将在多个地方使用相同的密码,包括您的网站。
这意味着CSRF攻击者可以从无关的数据泄露中知道他们的密码,或者通过让服务为他们收集密码(即免费的图像共享服务以明文形式记录密码,用于恶意目的(。
话虽如此,你提出问题是好的,而不是假设你是正确的。安全性很重要,推理和询问是帮助您学习和开发安全应用程序的好方法。
感谢您对安全的关心。我相信你可以在这里找到一些可能出错的例子:https://github.com/intelliants/subrion/issues/638
通常,对于用户身份验证的关键步骤,您应该应用零信任原则,并为客户添加尽可能多的保护。
当然,一切都取决于您如何设计应用程序。