Skip to content

Commit 503d406

Browse files
Refactored to use parameterized SQL APIs
1 parent 3cc8295 commit 503d406

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

src/main/java/com/acme/search/FederalConnection.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.acme.search;
22

3+
import java.sql.PreparedStatement;
34
import org.springframework.beans.factory.annotation.Autowired;
45
import org.springframework.stereotype.Service;
56

@@ -21,9 +22,10 @@ String doSearch(final String searchTerm) throws SQLException {
2122
// connect to the federal database
2223
Connection conn = fedConnectionLoader.getConnection();
2324
// search the forecasts table for entries with the given query
24-
String query = "SELECT * FROM forecasts WHERE entry_desc LIKE '%" + searchTerm + "%'";
25-
Statement stmt = conn.createStatement();
26-
ResultSet rs = stmt.executeQuery(query);
25+
String query = "SELECT * FROM forecasts WHERE entry_desc LIKE ?";
26+
PreparedStatement stmt = conn.prepareStatement(query);
27+
stmt.setString(1, "%" + searchTerm + "%");
28+
ResultSet rs = stmt.execute();
2729
List<String> ids = new ArrayList<>();
2830
while(rs.next()) {
2931
String id = rs.getString("entry_id");

src/main/java/com/acme/sql/SQLInjectionVuln.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,17 @@
55
import jakarta.ws.rs.QueryParam;
66

77
import java.sql.Connection;
8+
import java.sql.PreparedStatement;
89
import java.sql.SQLException;
910
import java.sql.Statement;
1011

1112
@Path("/unsafe-sql-injection")
1213
public class SQLInjectionVuln {
1314
@GET
1415
public String lookupResource(Connection connection, @QueryParam("resource") final String resource) throws SQLException {
15-
Statement statement = connection.createStatement();
16-
statement.executeQuery("select * from users where name = '" + resource + "'");
16+
PreparedStatement statement = connection.prepareStatement("select * from users where name = ?");
17+
statement.setString(1, resource);
18+
statement.execute();
1719
return "ok";
1820
}
1921
}

0 commit comments

Comments
 (0)