在javascript中验证SQL WHERE子句

时间:2017-07-05 08:15:31

标签: javascript sql string

如何验证字符串并知道它是否是有效的SQL where子句。 无效字符串的例外:WHERE 1=1 AND EMPRESA = 'CMIP' AND CD_MAQ ==="jjj" Ex字符串有效:WHERE 1=1 AND EMPRESA = 'CMIP' AND CD_MAQ ="jjj"

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

很抱歉,你不能轻易做到这一点......除非你想在Javascript中编写SQL Parser。

一种解决方案是将查询发布到后端,后端在try catch块中运行它,如果有错误则返回。

我担心这个验证的正则表达式/规则列表会手动执行。

你为什么要这样做?解释你的实际目标,而不是你建议的解决方案,我们可以想出一个更好的主意...... 如果您正在按照建议从搜索页面向SQL传递WHERE子句 - 这不是正确的方法...

请改用参数化查询。

同时阅读SQL注入:What is SQL injection?

答案 1 :(得分:0)

这是一个复杂的问题,你基本上想做的就是写一个SQL解释器。显然这些已经存在(当然在数据库系统上),但也有一些库可以为你做到这一点。对于Javascript,请参阅:

https://github.com/forward/sql-parser

虽然,您可能不希望仅在客户端执行安全关键验证,但在那里执行它并不会有什么坏处,然后在运行它之前在服务器端验证(如果这是结束)目标)。