私は3.0.9はRuby on Railsを使用していますが、私は「どのくらい危険なことができ、」データベースのレコードを保存するために、次のステートメントを使用して知りたい:「@ class_object_instance.save!(:validate => false)」メソッドはどれくらい危険ですか?
@user.save!(:validate => false)
すなわち、何が起こることができますか?たとえば、悪意のあるユーザーがデータベースに何かをハックする(例:許可されていない値を設定する)ことができますか?
注意:私は上記のコードの一部である:validate => false
を参照しており、検証プロセスをスキップすることができます。
さて、検証をスキップすることについての主な懸念事項は、ユーザーがデータベースにガベージデータを入力できるようにすることです。モデル検証をスキップする必要があることが分かった場合は、検証を更新する必要があることを示すサインです。 検証をスキップすると、データベース文字列は引き続きエスケープされるため、「 ';ドロップテーブルユーザー」などの値を入力することはできません。 DBに格納する。また、Rails 3はデフォルトで文字列の中でhtmlをエスケープしますので、特に<%= string_value.html_safe%>と言っていない限り、string_valueはエスケープされたHTMLとともに表示されます。だから、おそらくハッカーからは安全ですが、データの品質は低下します。 –