From 77ec79eb5e483a59157dff9b4fd75159e2fa132e Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 17 四月 2020 14:48:43 +0800 Subject: [PATCH] 2020-04-17 --- src/utils/utils.js | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/utils/utils.js b/src/utils/utils.js index 39c4111..f93eb25 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -51,6 +51,43 @@ } /** + * @description sql璇硶楠岃瘉 + * @return {String} sql sql璇彞 + * @return {String} type 楠岃瘉绫诲瀷 + */ + static verifySql (sql, type) { + if (!sql) return '' + let chars = [ + {key: 'create', reg: '(^|\\s)create\\s'}, + {key: 'insert', reg: '(^|\\s)insert\\s'}, + {key: 'delete', reg: '(^|\\s)delete\\s'}, + {key: 'update', reg: '(^|\\s)update\\s'}, + {key: 'set', reg: '(^|\\s)set\\s'}, + {key: 'drop', reg: '(^|\\s)drop\\s'}, + {key: 'alter', reg: '(^|\\s)alter\\s'}, + {key: 'truncate', reg: '(^|\\s)truncate\\s'}, + {key: 'if', reg: '(^|\\s)if\\s'}, + {key: 'exec', reg: 'exec'}, + {key: 'OBJECT', reg: 'OBJECT'}, + {key: 'sys.', reg: 'sys.'}, + {key: 'kill', reg: 'kill'}, + ] + + if (type === 'customscript') { + chars = chars.map(char => !['insert', 'delete', 'update', 'set', 'if', 'exec'].includes(char.key)) + } + + let error = '' + chars.forEach(char => { + if (!error && new RegExp(char.reg, 'ig').test(sql)) { + error = char.key + } + }) + + return error + } + + /** * @description sql鍔犲瘑 * @return {String} value */ @@ -158,6 +195,7 @@ }] if (!isUnFormat) { // 鍔犲瘑 + value = value.replace(/\n/ig, ' \n ') // 鏇挎崲鍏抽敭瀛� format.forEach(item => { let reg = new RegExp('(^|\\s)' + item.key + '(\\s|$)', 'ig') @@ -166,7 +204,7 @@ // 1銆佹浛鎹�%绗︼紙鏁版嵁搴撲腑瑙f瀽鍚巗ql鎶ラ敊锛� value = value.replace(/%/ig, ' mpercent ') - + // 1銆乪ncode缂栫爜锛堜腑鏂囧瓧绗﹁秴鍑篵ase64鍔犲瘑鑼冨洿锛夛紝2銆乥ase64鍔犲瘑 value = window.btoa(window.encodeURIComponent(value)) @@ -181,13 +219,15 @@ value = window.atob(value) value = value.replace(salt, '') value = window.decodeURIComponent(window.atob(value)) + value = value.replace(/\smpercent\s/g, '%') format.forEach(item => { let reg = new RegExp(item.value, 'g') value = value.replace(reg, ' ' + item.key + ' ') }) - + + value = value.replace(/\s\n\s/ig, '\n') value = value.replace(/(^\s+|\s+$)/ig, '') } catch { console.warn('UnFormat Failure') -- Gitblit v1.8.0