Deviseに,usernameカラムを追加した時に,公式のwikiを見ててまずいな,と思ったポイントです.
公式では,追加したusernameのバリデーションに,次の正規表現を使っていました.
# app/models/user.rb
# Only allow letter, number, underscore and punctuation.
validates_format_of :username, with: /^[a-zA-Z0-9_\.]*$/, :multiline => true
しかし,:multiline => true
がセキュリティー的に問題です.なしだと,こうなります.
Rails Guide (6.6)によると,Rails 4以降では,^,$ではなく代わりに\A, \zを使うことが推奨されています.なので,こう変えましょう.
validates_format_of :name, with: /\A[a-zA-Z0-9_\.]*\z/
参考:
http://jumperson.hatenablog.com/entry/2013/06/27/062237
http://guides.rubyonrails.org/security.html#regular-expressions
https://stackoverflow.com/questions/577653/difference-between-a-z-and-in-ruby-regular-expressions