【问题标题】:Detect SQL injection in Groovy dynamic SQL在 Groovy 动态 SQL 中检测 SQL 注入
【发布时间】:2015-07-08 21:36:14
【问题描述】:

如何使用动态原生 SQL 检测 Grails 应用程序中的 SQL 注入漏洞?

我正在寻找能够区分这两者的东西

def sql = new Sql(dataSource)
def dynamicWhereClause = ""
if (params.col) {
   dynamicWhereClause = " and col = :col"
}
// OK because dynamic SQL does not concatenate user input
def sqlString = "select * from tab where ... ${dynamicWhereClause}"
sql.rows(sqlString, params)

还有这个

def sql = new Sql(dataSource)
def dynamicWhereClause = ""
if (params.col) {
   // NOT OK - directly concatenating user input
   dynamicWhereClause = " and col = '" + params.col + "'"
}
def sqlString = "select * from tab where ... ${dynamicWhereClause}"
sql.rows(sqlString)

Sonarqube/Findbugs 有一条规则,例如“准备好的语句是从非常量字符串生成的”,但它不会区分安全语句和危险语句。还有哪些其他选择?

【问题讨论】:

  • 也许是代码审查?
  • 是的,代码审查和培训是我们目前的主要防御措施,我正在寻找一种支持,以在出现问题时提供一些保证。

标签: security grails groovy sql-injection


【解决方案1】:

如何使用Static Analysis 工具,例如"Find Security Bugs"

See here 用于与 Groovy 兼容的其他人。

【讨论】:

  • SonarQube 有 Groovy (docs.codehaus.org/display/SONAR/Groovy+Plugin) 和 FindBugs 插件,但似乎不能同时支持这两者。我开始认为,在这样一个动态环境中使用静态分析可以做的事情只是存在固有限制。
猜你喜欢
  • 1970-01-01
  • 2021-08-14
  • 2023-03-26
  • 1970-01-01
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 2021-02-14
相关资源
最近更新 更多