【发布时间】:2010-12-21 05:42:32
【问题描述】:
我正在尝试在 java 中放置一些反 sql 注入,但发现使用“replaceAll”字符串函数非常困难。最终我需要一个函数来将任何现有的\ 转换为\\,将任何" 转换为\",将任何' 转换为\',以及将任何\n 转换为\\n,这样当字符串由 MySQL SQL 注入评估将被阻止。
我已经提取了一些我正在使用的代码,并且函数中的所有\\\\\\\\\\\ 都让我的眼睛发疯了。如果有人碰巧有这样的例子,我将不胜感激。
【问题讨论】:
-
好的,我得出的结论是 PreparedStatements 是要走的路,但是根据当前的目标,我需要按照最初的计划进行,并且暂时放置一个过滤器一旦达到当前的里程碑,我就可以返回并重构数据库以获取preparedstatement。在保持势头的同时,考虑到 Java 和它的正则表达式系统,是否有人有一个解决方案可以有效地转义 MySQL 的上述字符,计算出所需的转义数量是绝对痛苦的......
-
并非所有 SQL 语句都是可参数化的,例如“SET ROLE role_name”或“LISTEN channel_name”
标签: java sql regex escaping sql-injection