相关疑难解决方法(0)

安全的ActiveRecord就像查询一样

我正在尝试编写LIKE查询.

我读到纯字符串quires不安全,但我找不到任何解释如何编写安全的LIKE Hash Query的文档.

可能吗?我应该手动防御SQL注入吗?

ruby activerecord ruby-on-rails-4

73
推荐指数
3
解决办法
5万
查看次数

Rails SQL注入?

在Rails中,当我想通过用户找到给定的值并避免SQL注入(转义撇号等)时,我可以这样做:

Post.all(:conditions => ['title = ?', params[:title]])
Run Code Online (Sandbox Code Playgroud)

我知道这样做的一种不安全的方式(可能的SQL注入)是这样的:

Post.all(:conditions => "title = #{params[:title]}")
Run Code Online (Sandbox Code Playgroud)

我的问题是,以下方法是否会阻止SQL注入?

Post.all(:conditions => {:title => params[:title]})
Run Code Online (Sandbox Code Playgroud)

security sql-injection ruby-on-rails

31
推荐指数
3
解决办法
1万
查看次数

Rails activerecord LIKE AND子句错误

这是一个我试图在rails中使用的activerecord查询

q = "Manchester"
b = "John Smith"

Model.find(:all, :conditions => ["city ? AND name like ?", q, b])
Run Code Online (Sandbox Code Playgroud)

但我在rails控制台中收到此错误

ActiveRecord :: StatementInvalid:SQLite3 :: SQLException:near"'Manchester'":语法错误:SELECT"model".*FROM"model"WHERE(城市'Manchester'和名称'John Smith')

请帮忙!

activerecord ruby-on-rails

4
推荐指数
2
解决办法
5296
查看次数

使用ActiveRecord使用OR子句进行查询的"Rails方式"是什么?

我正在使用Rails 3和MySQL数据库,我需要以编程方式创建这样的查询:

select * from table where category_name like '%category_name_1%' 
OR category_name like '%category_name_2%'
(...snip...)
OR category_name like '%category_name_n%'
Run Code Online (Sandbox Code Playgroud)

鉴于表格大小和项目范围(我认为最多500行),我觉得使用像思考sphinx这样的东西会有点过分.我知道我可以通过直接编写查询字符串来完成此操作,但想知道是否有ActiveRecord方法来执行此操作.在官方指南中没有提到这一点,我现在谷歌搜索了很长一段时间,只是空手而归:(

另外,有没有理由(可能是Rails的原因?)不包含OR子句?

谢谢!

ruby mysql activerecord ruby-on-rails ruby-on-rails-3.2

1
推荐指数
1
解决办法
490
查看次数

Ruby on Rails 2.3 SQL LIKE查询

我能够在Rails 2.3中进行LIKE查询的唯一方法如下:

access_points.all(:conditions => "mac_address LIKE '%#{@q}%'")
Run Code Online (Sandbox Code Playgroud)

官方文档说这样做是不安全的,因为受SQL注入:

将自己的条件构建为纯字符串可能会使您容易受到SQL注入攻击.例如,Client.first(:conditions =>"name LIKE'%#{params [:name]}%'")不安全.有关使用数组处理条件的首选方法,请参阅下一节. http://guides.rubyonrails.org/v2.3.8/active_record_querying.html

但不幸的是,它没有解释如何正确地进行LIKE查询,而且我无法在谷歌上找到它,因为LIKE是如此通用的关键字.

任何提示?我是Rails的新手,但我有Symfony和Django的经验.

ruby-on-rails

1
推荐指数
1
解决办法
3217
查看次数

在Ruby on Rails中使用like query进行搜索

我是ROR开发的初学者.我有导航,我想在每个页面上搜索框,当我输入一些关键字时,它应该像在表格的字段中查询一样.我尝试使用一些在线教程,但无法做到.我的表名:这里的教程是导航栏上的搜索表单

<li><%= link_to 'Login', :controller => 'access', :action => 'login'  %></li>
<li><%= link_to 'Sign Up', :controller => 'users', :action => 'new'  %></li>
<li><%= link_to 'Logout', :controller => 'access', :action => 'logout'  %></li>
<div align="right">
<%= form_tag("/search", method: "get") do %>
  <%= label_tag(:q, "Search for:") %>
  <%= text_field_tag(:q) %>
  <%= submit_tag("Search") %>
<% end %>
</div>
Run Code Online (Sandbox Code Playgroud)

这是我的控制器

class SearchController < ApplicationController 

  def show
    @tutorial = Tutorial.find(params[:q])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @tutorial }
    end
  end
end …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

1
推荐指数
1
解决办法
6670
查看次数