我们应该验证字符串字段的最大长度吗?

时间:2018-11-22 23:37:23

标签: postgresql

我们在应用程序中进行了一次验证,将用户的名字和姓氏长度限制为255个字符。我们应该这样做有什么技术原因吗?我想知道是否存在不限制字符串长度的安全问题或风险。我们正在使用Postgres的text列。

1 个答案:

答案 0 :(得分:1)

Text =可变的无限长度。如果您放置限制器,为什么不使用varchar(255)

出于安全方面的考虑,性能限制器很好。如果您的数据库文件很重,并且有人向您的text发送垃圾邮件,则数据类型超过8 KB。这将使您的数据库很繁重,在最坏的情况下,它可能Break Down。.

编辑

Documentation说:

  

如果要存储没有特定上限的长字符串,请使用   文本或字符变化而没有长度说明符,而不是   构成任意长度限制。

回到您最初的问题“ 我们应该验证字符串字段的最大长度”吗?

当看到文档说的时候。.最好将其设置为Varchar(255)而不是Varchar而没有长度说明符,并在应用程序端进行限制器

为了性能:

  

长字符串由系统自动压缩,因此   磁盘上的物理需求可能更少。也很长的值   存储在后台表中,以免干扰快速   访问较短的列值。

我会说Postgresql很棒:)