【问题标题】:Is a hidden token field not insecure?隐藏的令牌字段不是不安全的吗?
【发布时间】:2020-07-24 12:34:02
【问题描述】:

我对 PHP 完全陌生,想使我的表单更安全。通过谷歌搜索,我发现我应该在表单中插入一个隐藏字段,例如 <input type="hidden" name="token" value="<?php echo $token ?>。但这不是不安全吗?
如果我现在使用 chrome 开发工具检查该字段,那么我会将令牌视为纯文本。这很糟糕吗?
另外,方法 htmlentities() 应该用于用户输入。令牌也应该这样做吗?例如:value="<?php echo htmlentities($token) ?>"

【问题讨论】:

  • 表单域本身既不安全也不安全。当您对这些数据做某事时,安全性很重要。你用这些数据做什么?
  • 你为什么不在输入字段中使用加密
  • token 通常是一个常规字符串,所以不需要 htmlentities。这仅用于输出到浏览器。
  • @David 我只是将它发送到另一个 php 文件并在那里验证用户是否正确填写了联系表格并且令牌是否匹配。如果用户已正确填写表单并且令牌匹配,则会发送一封电子邮件。就是这样
  • 旁注:如果您正在制作一个联系表单,在表单提交时向某人发送电子邮件,您可能需要添加一个“蜜罐”以同时拒绝/静默错误。

标签: php forms token


【解决方案1】:

通常,表单中的令牌用于防止csrf 攻击。 不,这不是不安全的,因为唯一可以看到令牌的用户就是使用它的用户。

不,如果您在服务器上创建令牌而不接受用户输入,则不需要使用 htmlentities() 作为令牌。

注意:确保令牌绑定到会话,否则如果用户 A 通过发送 GET/POST 请求访问他的网站,用户 B 可能会使用他的令牌提交用户 A 的表单。到具有预定义值的表单。

【讨论】:

  • 啊,好吧,我明白了。我只是在做一个教程,他们使用了这个令牌。那么这意味着在我的场景中不需要令牌吗?我只是制作一个网站(1 页),用户只填写联系表格。然后通过 ajax 将其发送到我的 validation.php 文件(如果未关闭 javascript)。如果用户正确填写了表单,我在这里进行服务器端验证。所以 csrf 只有在用户可以分别登录网站的情况下才有可能。所以对于我的场景来说,令牌是不必要的。
猜你喜欢
  • 2012-03-12
  • 1970-01-01
  • 2011-07-07
  • 2013-06-10
  • 2014-04-01
  • 1970-01-01
  • 2013-10-02
  • 2021-12-17
  • 1970-01-01
相关资源
最近更新 更多