У меня есть эти строковые/текстовые поля в файле миграции базы данных:
t.string :author
t.string :title
t.string :summary
t.text :content
t.string :link
И это мои вопросы:
- Каждый атрибут string/text должен иметь максимальную проверку длины для обеих целей, безопасность (если вы не хотите получать несколько МБ текстового ввода) и базу данных (если string = varchar, mysql имеет ограничение на 255 символов), Правильно ли это или нет каких-либо причин не иметь проверки максимальной длины для всего атрибута строки/текста в базе данных?
- Если меня не интересует точная длина автора и названия как долго, так как они не слишком длинны для хранения в виде строк, я должен установить максимальную длину до 255 для каждого из них?
- Если максимальная длина URL-адреса составляет около 2000 символов, безопасно ли хранить ссылки как строки, а не как тексты? Должен ли я проверять максимальную длину атрибута ссылки, если я уже проверяю его формат с помощью regexp?
- Если атрибут content (text) имеет максимальную длину только для защиты базы данных от ввода неограниченной длины? Например, задается максимальная длина текстового поля до 100 000 символов, или это совершенно бессмысленно и неэффективно?
Я понимаю, что эти вопросы могут показаться неважными для некоторых людей, но все же - это проверка ввода, которая требуется для любого приложения, - и я считаю, что здесь стоит быть довольно параноидальным.