3
我正在構建一個應用程序,用戶可以在其中爲其配置文件創建url slugs。爲了確保蛞蝓是有效的我已經添加在用戶模型驗證的蛞蝓:簡單的rails格式驗證不會觸發
validates :slug, :uniqueness => true, :format => { :with => /[a-z]+/ }, :allow_nil => true, :allow_blank => true
然而,驗證似傳,無論什麼格式的字符串蛞蝓,例如:
u.slug = 'jlskdf .jc oi/slkdjfie\*asdf&(*&*ss%&'
=> "jlskdf .jc oi/slkdjfie\\*asdf&(*&*ss%&"
u.save
=> true
顯然,我改變正則表達式並不重要,一切都過去了。我也嘗試過這種格式:
validates_format_of :slug, :with => /[a-z]+/
它給出了相同的結果。任何人有任何想法會發生什麼?
Ruby on Rails的正則表達式[安全指南(http://guides.rubyonrails.org/security.html#regular-expressions)現在建議你不要使用線開始和結束的驗證('^ '和'$'),這是一個安全威脅(可能會利用javascript)。改爲使用[string start/end](http://stackoverflow.com/questions/577653/difference-between-a-z-and-in-ruby-regular-expressions)作爲'\ A'和'\ z'。 – 2016-02-15 17:23:14
@AndresEhrenpreis是的,謝謝你找到這個。我編輯過它。 – 2016-02-15 17:28:17