現在railsでwebアプリを開発しています。
ruby、ruby on rails共に1ヶ月程前から学び始めた初学者です。
開発中のwebアプリでBRAKEMANを利用してセキュリティチェックを行なったところ、
sql injectionのwarningが発生してしまいました。
該当コードを修正しようと思うのですが、BRAKEMANのoutputを見ても
どこを修正すれば良いかわかりません。
以下エラーの場合どのファイルを、どのように修正すれば良いのでしょうか?
情報の抜け等もあると思います。
その際はお手数おかけいたしますがご指摘お願いします。
以下BRAKEMANのoutputコピー
+SUMMARY+ +-------------------+-------+ | Scanned/Reported | Total | +-------------------+-------+ | Controllers | 5 | | Models | 4 | | Templates | 36 | | Errors | 0 | | Security Warnings | 1 (0) | +-------------------+-------+ +---------------+-------+ | Warning Type | Total | +---------------+-------+ | SQL Injection | 1 | +---------------+-------+ +SECURITY WARNINGS+ +------------+--------------------+----------------------------+---------------+------------------------------------------------------------------------------------------------->> | Confidence | Class | Method | Warning Type | Message >> +------------+--------------------+----------------------------+---------------+------------------------------------------------------------------------------------------------->> | Medium | ActiveRecord::Base | s(:self).reset_pk_sequence | SQL Injection | Possible SQL injection near line 8: ActiveRecord::Base.connection.execute("update sqlite_sequenc>> +------------+--------------------+----------------------------+---------------+------------------------------------------------------------------------------------------------->>
以下追記・・・・
エラーの該当ファイル以下に追記します。
lib/active_record/add_reset_pk_sequence_to_base.rb
ruby
1module ActiveRecord 2 class Base 3 def self.reset_pk_sequence 4 case ActiveRecord::Base.connection.adapter_name 5 when 'SQLite' 6 new_max = maximum(primary_key) || 0 7 update_seq_sql = "update sqlite_sequence set seq = #{new_max} where name = '#{table_name}';" 8 ActiveRecord::Base.connection.execute(update_seq_sql) 9 when 'PostgreSQL' 10 ActiveRecord::Base.connection.reset_pk_sequence!(table_name) 11 else 12 raise "Task not implemented for this DB adapter" 13 end 14 end 15 end 16end
回答1件
あなたの回答
tips
プレビュー