在HTML文本输入字段上设置字符限制背后的主要实际原因是什么?

时间:2018-01-22 15:01:28

标签: html text input limit specifications

类似于用于编写帖子的文本字段或用于键入登录凭据的登录/密码字段。

作为一个例子,SO:Should I impose a maximum length on passwords?存在一个问题,其中像@ epochwolf,@ tardate或@kravietz这样的用户暗示输入长度限制是安全警告,因为它会使创建更强的密码变得更加困难。

OTOH @Jason Dagit写道,没有任何限制的文本输入字段允许潜在的攻击者在输入中使用非常长的字符串进行DoS攻击 - 但是可以在服务器端施加url限制。

此外,我已经阅读了与遗留系统的向后兼容性,它为用户的形式强加短字符串值。

即使HTML5.2 Forms specification - The maxlength and minlength attributes也没有说明这个问题的具体技术。

有人可以对这个问题有所了解吗?

2 个答案:

答案 0 :(得分:0)

如果存在将某些值限制为特定长度的业务规则,则有意义。如果它太长,立即验证某个值不能正确。包裹跟踪代码遵循特定格式并且不能超过特定长度的事情。对于其他任意数据,如果底层数据库或其他子系统将长度限制为VARCHAR(255)等,那么即使让用户输入任何更长的内容也没有意义。有争议的原因是数据库究竟会施加这样的限制,但只要合理,一些限制将会并且应该始终存在。

对密码没有任何意义,密码应始终进行哈希处理,从而减少到固定长度,这意味着原始输入的长度无关紧要。

防御DoS攻击毫无意义,因为攻击者不会将HTML表单字段用作攻击媒介,而是直接伪造任意HTTP请求。正如您所说,Web服务器会强加一些最大请求大小,超出该大小只会丢失连接。

答案 1 :(得分:-1)

如果存在未知漏洞,则有助于保护您的网站,例如,如果您需要使用java脚本代码的30个字符来破解/利用网站,但您的字符数限制设置为25,则会提供一些保护。