防御 SQL 注入

在原系统中,用户输入被直接连接到SQL查询字符串中,没有任何净化或参数化。这是SQL注入漏洞的常见原因。

为了防止SQL注入攻击,我们改用参数化查询或预处理语句,而不是直接将用户输入连接到SQL查询中。这可以帮助防止恶意输入被执行为SQL代码。

在提供的代码中,

String sql = "select * from t_user where username='"+username.trim()+"'";

这一行将username参数直接连接到SQL查询中。这是一个潜在的漏洞。

发现可以攻击成功

改为

String sql = "select * from t_user where username = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username.trim());
rs = pstmt.executeQuery();

成功防范了该漏洞

posted @ 2023-05-16 21:10  头发换代码  阅读(24)  评论(0编辑  收藏  举报