From 4590faec68aeec90634e75fe7b689b2cedecd6b7 Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期五, 30 八月 2024 21:45:27 +0800 Subject: [PATCH] update sqlkeyword --- src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java | 15 ++++++++++++--- 1 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java b/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java index 71a7ae1..e345cb4 100644 --- a/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java +++ b/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java @@ -13,12 +13,17 @@ /** * 瀹氫箟甯哥敤鐨� sql鍏抽敭瀛� */ - public static String SQL_REGEX = "select |insert |delete |update |drop |count |exec |chr |mid |master |truncate |char |and |declare "; + public static String SQL_REGEX = "and |extractvalue|updatexml|sleep|exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |or |union |like |+|/*|user()"; /** * 浠呮敮鎸佸瓧姣嶃�佹暟瀛椼�佷笅鍒掔嚎銆佺┖鏍笺�侀�楀彿銆佸皬鏁扮偣锛堟敮鎸佸涓瓧娈垫帓搴忥級 */ public static String SQL_PATTERN = "[a-zA-Z0-9_\\ \\,\\.]+"; + + /** + * 闄愬埗orderBy鏈�澶ч暱搴� + */ + private static final int ORDER_BY_MAX_LENGTH = 500; /** * 妫�鏌ュ瓧绗︼紝闃叉娉ㄥ叆缁曡繃 @@ -28,6 +33,10 @@ if (StringUtils.isNotEmpty(value) && !isValidOrderBySql(value)) { throw new UtilException("鍙傛暟涓嶇鍚堣鑼冿紝涓嶈兘杩涜鏌ヨ"); + } + if (StringUtils.length(value) > ORDER_BY_MAX_LENGTH) + { + throw new UtilException("鍙傛暟宸茶秴杩囨渶澶ч檺鍒讹紝涓嶈兘杩涜鏌ヨ"); } return value; } @@ -50,9 +59,9 @@ return; } String[] sqlKeywords = StringUtils.split(SQL_REGEX, "\\|"); - for (int i = 0; i < sqlKeywords.length; i++) + for (String sqlKeyword : sqlKeywords) { - if (StringUtils.indexOfIgnoreCase(value, sqlKeywords[i]) > -1) + if (StringUtils.indexOfIgnoreCase(value, sqlKeyword) > -1) { throw new UtilException("鍙傛暟瀛樺湪SQL娉ㄥ叆椋庨櫓"); } -- Gitblit v1.9.3