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