0

私の検索では、主に、次を使用して単一の入力ボックスを出力またはサニタイズするときにデータをサニタイズする方法を見つけました。

<%=h @name %> OR ['name = ?', params[:name]]

ただし、次のようなオブジェクトを作成しています。

@user = User.new( params[:user] )

これで、params[:user] ハッシュの各キーを 1 つずつサニタイズできましたが、もっと洗練された手法があるはずです。

4

1 に答える 1

0

これが最適化の理由である場合は、「サニタイズ」ジェムを使用してください。ただし、すべてのフィールドでそれを行うことについて話しているので、ここでは少し間違った匂いがします。ActiveRecordは、SQLインジェクションの問題を回避するためにすでに入力をエスケープしていますが、データベースに入るすべてのものをHTMLエスケープする必要はありません(元のデータを何らかの方法で処理する場合は、後で問題が発生する可能性があります)。 )。パフォーマンス上の理由から、データベースに入る前にサニタイズする必要があるのは、TinyMCEからのデータなど、リッチテキストエディターの入力フィールドのようなものだけです。ここでは、データをホワイトリストに対してフィルタリングします。単純な文字列変換でエスケープするだけです。

于 2011-06-02T08:51:18.123 に答える