java在java代码中生成安全的SQL
如何编写类似SQL(MySQL)的PreparedStatement,例如转义,以避免SQL注入和genearte安全的SQL语句
有没有现成的Java代码可以做到这一点
真实场景: 前端输入作为列值组成安全SQL(“where”部分),后端指定的是表名和列名
你可以在下面搜索框中键入要查询的问题!
如何编写类似SQL(MySQL)的PreparedStatement,例如转义,以避免SQL注入和genearte安全的SQL语句
有没有现成的Java代码可以做到这一点
真实场景: 前端输入作为列值组成安全SQL(“where”部分),后端指定的是表名和列名
# 1 楼答案
有一些SQL构建器,通常它们会跟踪所有参数并构建PreparedStatement。甚至可以考虑不仅提供参数值,还提供参数名称,这样就可以将其用作真正的PreparedStatement
您可以从Spring创建JdbcTemplate。或标准API
如果你想建立自己的研究,你也可以探索逃跑
(研究)还考虑禁止Unicode BIDI黑客与LTR(^ {< CD1>})和RTL(^ {< CD2>}):通过使用右到左控件,可以模糊编辑器中看似OK的SQL,但做一些恶意的不同。您可以要求字符不能出现在字符串中,但也必须转义:
\\u200F
(不过这是书呆子或内部人士的事情,您的SQL必须已经处于敏感点。)SQL方言很重要;名称等的倒勾(MySQL)或双引号(标准)
还有Apache的commonlang^{}