使用预备语句的变量列名
问题:
可以指定变量列名使用 Java 在 MySQL 中使用预准备语句来防止 SQL 注入漏洞?
说明:
准备好的语句旨在通过将查询参数与主查询语句分离来防止 SQL 注入。当尝试使用准备好的语句时,列名不会被识别为参数,而是会作为文字值插入到查询中。如果提供的列名称未正确清理,这可能会导致安全问题。
解决方案:
// Sanitize the user-provided column names String sanitizedColumns = columnNames.replace("'", "\'"); // Build the SQL query string String query = "SELECT a,b,c,ROW_NUMBER() OVER(), " + sanitizedColumns + " FROM " + name + " WHERE d=?"; // Prepare the statement stmt = conn.prepareStatement(query); stmt.setString(1, "x");
以上是Java 中的准备语句可以在 MySQL 中安全地处理变量列名吗?的详细内容。更多信息请关注PHP中文网其他相关文章!