gigibox
2023-06-20 e5dfbb23ac6fd3fc857fa93c5f6c4cb934db1458
添加sql语句校验, 查询接口只允许查询操作
1个文件已修改
22 ■■■■■ 已修改文件
kingdee/query.go 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
kingdee/query.go
@@ -2,6 +2,7 @@
import (
    "encoding/json"
    "strings"
    "kingdee-dbapi/config"
    "kingdee-dbapi/logger"
@@ -14,6 +15,12 @@
    var sql = string(data)
    logger.Debug("接收到查询请求,%s", sql)
    if !sqlCheck(sql) {
        logger.Warn("识别到危险的sql语句, 拒绝执行. %s", sql)
        return nil
    }
    if db == nil {
        logger.Debug("数据库未连接")
@@ -66,3 +73,18 @@
    return nil
}
// 简单过滤下sql语句,拒绝增删改操作
func sqlCheck(sql string) bool {
    var dangerousWords = []string{"INSERT", "UPDATE", "DELETE", "ALTER", "DROP", "DECLARE", "EXECUTE", "EXEC", "INTO", "TRANCATE"}
    var upperStr = strings.ToUpper(sql)
    for _, word := range dangerousWords {
        if strings.Contains(upperStr, word) {
            return false
        }
    }
    return true
}