【问题标题】:Secure a password change form [duplicate]保护密码更改表[重复]
【发布时间】:2018-01-22 09:33:14
【问题描述】:

当管理员手动更改用户密码时,他们需要将密码输入(或生成)到 HTML 输入中,然后提交给 PHP。

我将如何保护用于安全密码的输入,这意味着特殊/html 字符,例如“>”、“#”、“

以前,我用过:

<?php htmlspecialchars(strip_tags($password)) ?>

但这是将密码更改为其他内容,我猜是字符实体格式 - 由于通过 bcrypt 进行单向哈希,我也看不到它正在更改什么。

编辑:例如,这是一个密码*62mA&lt;Edq&lt;Kfx)3y,当我检查上述代码的输出时,它会输出到*62mA

谢谢

【问题讨论】:

  • strip_tags?您正在更改用户密码/限制他们使用某些我认为是直接缺陷的字符。
  • 为什么要和管理员手动更改用户密码?
  • 如果密码是散列的(而且它必须是散列的),那么就没有什么可以保护它了。但正如已经建议的那样 - 首先允许管理员更改用户密码是一个坏主意。
  • 只是不要(限制密码)。 password_hash()password_verify() 都考虑到了这一点。这本身就是一个答案。 &lt;b&gt;123'\DELETE 等密码被认为是完全有效的。
  • OP 根本不应该使用任何清理机制@Mario

标签: php security hash bcrypt change-password


【解决方案1】:

没有通用的“让这些数据在任何情况下都安全”的工具。您需要使用 situation 适当的 转义。

不要使用像strip_tags这样的破坏性函数。

如果要将其放入 HTML 文档:使用htmlspecialchars

如果要将其放入 SQL 数据库:使用准备好的语句。

如果您想将其放入 JavaScript:使用json_encode

……等等……等等。

处理数据的解析器将解码任何转义字符。


也就是说……不要存储密码。 Hash passwords Protect passwords.

【讨论】:

  • 那么一个 PDO 准备好的语句就足以保护该输入?
  • 安全地将其插入数据库而不丢失数据就足够了。如果您稍后将其插入 HTML 文档中将无济于事。
猜你喜欢
  • 2015-04-25
  • 1970-01-01
  • 2018-08-10
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 2011-12-02
  • 2012-01-28
  • 2011-02-01
相关资源
最近更新 更多