sql - 修复基于 URL 内容的 SQL 注入
问题描述
我试图为我的应用程序修复 SQL 注入。我用来获取详细信息的 SQL 查询是
"SELECT accountNumber, balance FROM accounts WHERE reg_id = "
+ request.getParameter("reg_id");
我知道这个查询很容易受到攻击,这就是为什么我试图使用绑定参数来解决这个问题,但问题是 reg_id 是字母数字数据以及“-”(连字符作为特殊符号,例如 - 1abh34-dfg465-aw234)我不能使用statement.setInt()
和statement.setString()
方法来验证 reg_id。
我的问题是,有什么方法可以用来验证字母数字数据吗?
我的java代码是
String accountBalanceQuery =
"SELECT accountNumber, balance FROM accounts WHERE reg_id = "
+ request.getParameter("reg_id");
try {
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery(accountBalanceQuery);
while (rs.next()) {
page.addTableRow(rs.getInt("accountNumber"), rs.getFloat("balance"));
}
} catch (SQLException e) { ... }
或者有没有其他方法可以在没有绑定参数的情况下修复这个漏洞。对此的任何线索将不胜感激。
解决方案
推荐阅读
- javascript - Find key and then replace value
- php - Laravel 5.5 + 图像不可读错误(使用干预\图像)
- c++ - valgrind 在单链接列表示例中显示内存泄漏
- spring - 如何在 Spring Cloud Data Flow 中创建简单的登录?
- c# - JSON 序列化的 ModelState 错误在 ASP.NET Core 2.2 WebApi 中的行为不同
- php - 我如何将 PHP 字符串转换为下面的数组结构
- python - 老化桶分析
- java - Javacv下使用FFmpegFrameGrabber启用ZVBI时如何配置ffmpeg
- python - 从大的时间间隔范围中减去较小的时间间隔
- python - Android 分类应用程序因 Tensorflow Lite 模型而崩溃