我试图在 java 中放置一些反 sql 注入,但发现很难使用“replaceAll”字符串函数。 Ultimately I need a function that will convert any existing \
to \\
, any "
to \"
, any '
至 \'
和任何 \n
至 \\n
以便当字符串被 MySQL SQL 注入评估时将被阻止。
我已经提取了一些我正在使用的代码,函数中的所有 \\\\\\\\\\\
让我眼花缭乱。如果有人碰巧有这方面的例子,我将不胜感激。
原文由 Scott Bonner 发布,翻译遵循 CC BY-SA 4.0 许可协议
PreparedStatements 是要走的路,因为它们使 SQL 注入变得不可能。这是一个将用户输入作为参数的简单示例:
不管name和email是什么字符,这些字符都会直接放到数据库中。它们不会以任何方式影响 INSERT 语句。
不同的数据类型有不同的设置方法——您使用哪种方法取决于您的数据库字段是什么。例如,如果数据库中有一个 INTEGER 列,则应使用
setInt
方法。 PreparedStatement 文档 列出了可用于设置和获取数据的所有不同方法。