fix: 修复order by和limit、page的sql注入风险
This commit is contained in:
parent
fa6333910b
commit
cfeb85c4ac
16
lxDb/sql.go
16
lxDb/sql.go
@ -207,10 +207,6 @@ func Query(tx *gorm.DB, m interface{}, list interface{}, q *PaginationQuery) (er
|
||||
//}
|
||||
|
||||
func SqlQuery(tx *gorm.DB, sql string, list interface{}, q *PaginationQuery, params ...interface{}) (err error) {
|
||||
// 验证输入参数的安全性
|
||||
if !isSafeSQL(sql) {
|
||||
return errors.New("检测到潜在的SQL注入风险")
|
||||
}
|
||||
|
||||
var builder strings.Builder
|
||||
builder.WriteString(sql)
|
||||
@ -293,6 +289,10 @@ func SqlQuery(tx *gorm.DB, sql string, list interface{}, q *PaginationQuery, par
|
||||
|
||||
// 安全地处理排序 - 使用白名单验证字段名
|
||||
if q.OrderBy != "" {
|
||||
// 验证输入参数的安全性
|
||||
if !isSafeSQL(sql) {
|
||||
return errors.New("检测到潜在的SQL注入风险")
|
||||
}
|
||||
safeOrderBy := sanitizeOrderBy(q.OrderBy)
|
||||
if safeOrderBy != "" {
|
||||
builder.WriteString(" ORDER BY ")
|
||||
@ -322,10 +322,6 @@ func SqlQuery(tx *gorm.DB, sql string, list interface{}, q *PaginationQuery, par
|
||||
}
|
||||
|
||||
func SqlQueryNew(tx *gorm.DB, sql string, list interface{}, q *PaginationQuery, params ...interface{}) (err error) {
|
||||
// 验证输入参数的安全性
|
||||
if !isSafeSQL(sql) {
|
||||
return errors.New("检测到潜在的SQL注入风险")
|
||||
}
|
||||
|
||||
var builder strings.Builder
|
||||
builder.WriteString(sql)
|
||||
@ -407,6 +403,10 @@ func SqlQueryNew(tx *gorm.DB, sql string, list interface{}, q *PaginationQuery,
|
||||
|
||||
// 安全地处理排序 - 使用白名单验证字段名
|
||||
if q.OrderBy != "" {
|
||||
// 验证输入参数的安全性
|
||||
if !isSafeSQL(sql) {
|
||||
return errors.New("检测到潜在的SQL注入风险")
|
||||
}
|
||||
safeOrderBy := sanitizeOrderBy(q.OrderBy)
|
||||
if safeOrderBy != "" {
|
||||
builder.WriteString(" ORDER BY ")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user