如何验证字符串并知道它是否是有效的SQL where子句。
无效字符串的例外:WHERE 1=1 AND EMPRESA = 'CMIP' AND CD_MAQ ==="jjj"
Ex字符串有效:WHERE 1=1 AND EMPRESA = 'CMIP' AND CD_MAQ ="jjj"
感谢您的帮助。
答案 0 :(得分:0)
很抱歉,你不能轻易做到这一点......除非你想在Javascript中编写SQL Parser。
一种解决方案是将查询发布到后端,后端在try catch块中运行它,如果有错误则返回。
我担心这个验证的正则表达式/规则列表会手动执行。
你为什么要这样做?解释你的实际目标,而不是你建议的解决方案,我们可以想出一个更好的主意...... 如果您正在按照建议从搜索页面向SQL传递WHERE子句 - 这不是正确的方法...
请改用参数化查询。
同时阅读SQL注入:What is SQL injection?
答案 1 :(得分:0)
这是一个复杂的问题,你基本上想做的就是写一个SQL解释器。显然这些已经存在(当然在数据库系统上),但也有一些库可以为你做到这一点。对于Javascript,请参阅:
https://github.com/forward/sql-parser
虽然,您可能不希望仅在客户端执行安全关键验证,但在那里执行它并不会有什么坏处,然后在运行它之前在服务器端验证(如果这是结束)目标)。