| | |
| | | } |
| | | |
| | | /** |
| | | * @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 |
| | | */ |
| | |
| | | }] |
| | | |
| | | if (!isUnFormat) { // 加密 |
| | | value = value.replace(/\n/ig, ' \n ') |
| | | // 替换关键字 |
| | | format.forEach(item => { |
| | | let reg = new RegExp('(^|\\s)' + item.key + '(\\s|$)', 'ig') |
| | |
| | | |
| | | // 1、替换%符(数据库中解析后sql报错) |
| | | value = value.replace(/%/ig, ' mpercent ') |
| | | |
| | | |
| | | // 1、encode编码(中文字符超出base64加密范围),2、base64加密 |
| | | value = window.btoa(window.encodeURIComponent(value)) |
| | | |
| | |
| | | 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') |