Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
Brakeman
提交
3fa341d7
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 搜索 >>
提交
3fa341d7
编写于
5月 10, 2012
作者:
J
Justin Collins
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Just moving methods in CheckSQL
上级
1b3af704
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
36 addition
and
29 deletion
+36
-29
lib/brakeman/checks/check_sql.rb
lib/brakeman/checks/check_sql.rb
+36
-29
未找到文件。
lib/brakeman/checks/check_sql.rb
浏览文件 @
3fa341d7
...
...
@@ -311,6 +311,40 @@ class Brakeman::CheckSQL < Brakeman::BaseCheck
unsafe_sql?
arg
,
:ignore_hash
end
#Check hash keys for user input.
#(Seems unlikely, but if a user can control the column names queried, that
#could be bad)
def
check_hash_keys
exp
hash_iterate
(
exp
)
do
|
key
,
value
|
unless
symbol?
key
if
unsafe_key
=
unsafe_sql?
(
value
)
return
unsafe_key
end
end
end
false
end
#Check an interpolated string for dangerous values.
#
#This method assumes values interpolated into strings are unsafe by default,
#unless safe_value? explicitly returns true.
def
check_string_interp
arg
arg
.
each
do
|
exp
|
if
node_type?
(
exp
,
:string_eval
,
:evstr
)
and
not
safe_value?
exp
[
1
]
return
exp
[
1
]
end
end
nil
end
#Checks the given expression for unsafe SQL values. If an unsafe value is
#found, returns that value (may be the given _exp_ or a subexpression).
#
#Otherwise, returns false/nil.
def
unsafe_sql?
exp
,
ignore_hash
=
false
return
unless
sexp?
exp
...
...
@@ -323,9 +357,10 @@ class Brakeman::CheckSQL < Brakeman::BaseCheck
end
end
#Check _exp_ for dangerous values. Used by unsafe_sql?
def
find_dangerous_value
exp
,
ignore_hash
case
exp
.
node_type
when
:lit
,
:str
,
:const
,
:colon2
when
:lit
,
:str
,
:const
,
:colon2
,
:true
,
:false
,
:nil
nil
when
:array
#Assume this is an array like
...
...
@@ -401,34 +436,6 @@ class Brakeman::CheckSQL < Brakeman::BaseCheck
false
end
#Check hash keys for user input.
#(Seems unlikely, but if a user can control the column names queried, that
#could be bad)
def
check_hash_keys
exp
hash_iterate
(
exp
)
do
|
key
,
value
|
unless
symbol?
key
if
unsafe_key
=
unsafe_sql?
(
value
)
return
unsafe_key
end
end
end
false
end
#Check an interpolated string for dangerous values.
#
#This method assumes values interpolated into strings are unsafe by default,
#unless safe_value? explicitly returns true.
def
check_string_interp
arg
arg
.
each
do
|
exp
|
if
node_type?
(
exp
,
:string_eval
,
:evstr
)
and
not
safe_value?
exp
[
1
]
return
exp
[
1
]
end
end
nil
end
IGNORE_METHODS_IN_SQL
=
Set
[
:id
,
:table_name
]
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录