私は私のデータベース移行ファイルにこれらの文字列/テキストフィールドを持っている:Rails ActiveRecordバリデーション:文字列の最大長?
t.string :author
t.string :title
t.string :summary
t.text :content
t.string :link
そして、これらは私の質問です:
- すべての文字列/テキスト属性は、両方の目的のために最大長の検証を持っている必要があり、セキュリティ(数MBのテキスト入力を受けたくない場合)とデータベース(string = varcharの場合、mysqlの文字数は255文字です)。それが正しいのですか、データベースの文字列/テキストのすべての属性に対して最大長の検証をしない理由がありますか?
- 著者とタイトルの正確な長さが長いと気にしない場合、文字列として保存するには長すぎないので、それぞれの長さを255に設定する必要がありますか?
- URLの最大長が約2000文字の場合、リンクを文字列ではなくテキストとして保存するのは安全ですか? regexpを使用してすでにフォーマットを検証している場合、リンク属性の最大長を検証する必要がありますか?
- コンテンツ(テキスト)属性は、制限のない入力からデータベースを保護するために最大長を持つべきですか?たとえば、テキストフィールドの最大長を合理的な100,000文字に設定するか、これは全く無意味で非効率的ですか?
これらの質問は一部の人にとって重要ではないように思えるかもしれませんが、それは入力の検証であり、アプリケーションには必要ですが、ここではむしろ妄想的な価値があると思います。