提前感谢您提供的任何帮助!我已经查看了有关 Stack Overflow 的类似文章以及这些文章:
- http://www.codinghorror.com/blog/2005/04/give-me-parameterized-sql-or-give-me-death.html
- 这容易发生SQL注入吗?
- http://www.codeproject.com/Articles/16994/Use-SQL-Parameters-to-Overcome-Ad-Hoc-Performance
但是,我对 MySQL 非常陌生,并且正在使用由另一个开发团队创建的 Ruby on Rails 网站。我只是无法根据我的情况拼凑不同的文章。
我知道我的代码中存在 SQL 注入漏洞,我需要使用参数。我只是不确定如何使用我的代码来做到这一点。我在下面包含了它的一部分:
从我的 search.html.erb 中,SELECT 语句读取:
@office_matches = Masterlocation.paginate_by_sql("select * from mylocations where # {search_string} order by nickname asc", :page => params[:page], :per_page => 20)
然后,在 search_controller.rb 中,它显示:
def results
@search_string = ""
@first_term = 'y'
params[:search_terms_new] = "something in here so loop works"
if params[:search_terms_new] != ""
# debugger
if params[:city] != ""
@search_string << "and city like '%#{params[:city]}%' "
if @first_term == 'y'
@search_string = @search_string.gsub('and ', " ")
@first_term = 'n'
end
end
if params[:search][:state] != ""
@search_string << "and state = '#{params[:search][:state]}' "
if @first_term == 'y'
@search_string = @search_string.gsub('and ', " ")
@first_term = 'n'
end
end
我应该如何更改此代码以防止 SQL 注入攻击?