我的数据库迁移文件中有这些字符串/文本字段:
t.string :author
t.string :title
t.string :summary
t.text :content
t.string :link
这些是我的问题:
- 每个字符串/文本属性都应该有一个最大长度验证,用于安全性(如果您不想接收几 MB 的文本输入)和数据库(如果 string = varchar,mysql 有 255 个字符的限制)。这是正确的还是有任何理由不对数据库中的每个字符串/文本属性进行最大长度验证?
- 如果我不关心作者和标题的确切长度,因为它们不会太长而不能存储为字符串,我是否应该将每个最大长度设置为 255?
- 如果 URL 的最大可能长度约为 2000 个字符,那么将链接存储为字符串而不是文本是否安全?如果我已经使用正则表达式验证其格式,是否应该验证链接属性的最大长度?
- 内容(文本)属性是否应该具有最大长度以保护数据库免受无限长度的输入?例如,将文本字段的最大长度设置为 100,000 个字符是否合理,或者这完全没有意义且效率低下?
我理解,这些问题对某些人来说似乎并不重要,但仍然——这是对输入的验证,任何应用程序都需要——而且我认为在这里有点偏执是值得的。