我的表单中有一个密码字段,没有最大长度限制。
密码将通过 PHPass 框架散列到数据库中。
我读过一些地方,通过类似没有最大限制的字段输入大数据可以对站点进行 DoS。
所以我的问题是:
- 我应该如何处理服务器端的大密码数据条目(使用 PHP)?
我的表单中有一个密码字段,没有最大长度限制。
密码将通过 PHPass 框架散列到数据库中。
我读过一些地方,通过类似没有最大限制的字段输入大数据可以对站点进行 DoS。
所以我的问题是:
攻击者总是可以向您的服务器发送大数据,无论是密码字段还是其他字段,都无法使用 HTML 或 JavaScript 阻止此客户端。您可以做的是在发送大量输入时停止在服务器端工作,尽管这个限制应该非常高。
请记住,对于像 BCrypt 这样的迭代哈希函数,只有第一个计算有更多的数据可以使用,其他迭代使用之前的哈希。在我看来,没有理由将密码限制在 1KB 以下。
简单的:
任何一个
添加一个高但不危险的长度限制 - 例如,128 个字符比大多数真实的人使用的要多,但添加了一个上诉流程,即人们可以点击一个链接来请求人类的特定例外,
或者
让 javascript 元素计算散列客户端并仅提交散列 - 无论如何这对安全性更好,因为密码永远不会离开客户端。
如果您希望保护自己免受 DoS 攻击,则必须使用:
post-max-size - http://www.php.net/manual/en/ini.core.php#ini.post-max-size
这允许您控制 PHP 服务器将接受多少 POST 数据,请注意,如果您的表单正在上传文件,这也会控制文件的大小。