Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
Brakeman
提交
7d20655c
B
Brakeman
项目概览
李少辉-开发者
/
Brakeman
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
Brakeman
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
7d20655c
编写于
5月 14, 2012
作者:
J
Justin Collins
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
CheckSQL: Add check for Model#select
上级
f494d0fd
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
20 addition
and
3 deletion
+20
-3
lib/brakeman/checks/check_sql.rb
lib/brakeman/checks/check_sql.rb
+2
-2
test/apps/rails3.1/app/models/product.rb
test/apps/rails3.1/app/models/product.rb
+8
-0
test/tests/test_rails31.rb
test/tests/test_rails31.rb
+10
-1
未找到文件。
lib/brakeman/checks/check_sql.rb
浏览文件 @
7d20655c
...
...
@@ -20,7 +20,7 @@ class Brakeman::CheckSQL < Brakeman::BaseCheck
:find
,
:find_by_sql
,
:first
,
:last
,
:maximum
,
:minimum
,
:sum
]
if
tracker
.
options
[
:rails3
]
@sql_targets
.
concat
[
:from
,
:group
,
:having
,
:joins
,
:lock
,
:order
,
:reorder
,
:where
]
@sql_targets
.
concat
[
:from
,
:group
,
:having
,
:joins
,
:lock
,
:order
,
:reorder
,
:
select
,
:
where
]
end
Brakeman
.
debug
"Finding possible SQL calls on models"
...
...
@@ -159,7 +159,7 @@ class Brakeman::CheckSQL < Brakeman::BaseCheck
check_order_arguments
args
when
:joins
check_joins_arguments
args
[
1
]
when
:from
when
:from
,
:select
unsafe_sql?
args
[
1
]
when
:lock
check_lock_arguments
args
[
1
]
...
...
test/apps/rails3.1/app/models/product.rb
浏览文件 @
7d20655c
...
...
@@ -142,4 +142,12 @@ class Product < ActiveRecord::Base
Product
.
average
(
:price
,
:conditions
=>
[
"blah =
#{
params
[
:columns
]
}
and x = ?"
,
x
])
Product
.
sum
(
params
[
:columns
])
end
def
test_select
#Should not warn
Product
.
select
([
:price
,
:sku
])
#Should warn
Product
.
select
params
[
:columns
]
end
end
test/tests/test_rails31.rb
浏览文件 @
7d20655c
...
...
@@ -15,7 +15,7 @@ class Rails31Tests < Test::Unit::TestCase
:model
=>
0
,
:template
=>
2
,
:controller
=>
1
,
:warning
=>
3
5
}
:warning
=>
3
6
}
end
def
test_without_protection
...
...
@@ -351,6 +351,15 @@ class Rails31Tests < Test::Unit::TestCase
:file
=>
/product\.rb/
end
def
test_sql_injection_in_select
assert_warning
:type
=>
:warning
,
:warning_type
=>
"SQL Injection"
,
:line
=>
151
,
:message
=>
/^Possible\ SQL\ injection/
,
:confidence
=>
0
,
:file
=>
/product\.rb/
end
def
test_select_vulnerability
assert_warning
:type
=>
:template
,
:warning_type
=>
"Cross Site Scripting"
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录