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