我正在使用prepareStatement()
來防止sql注入。我現在遇到的問題是用下面的方法,我可以做getConnection().prepareStatement()
然後建立我的查詢,但是我需要嘗試每次調用getConnection()
並在finally
區塊中關閉它。 createStatement().execute()
似乎更好,因爲我可以讓客戶端傳遞查詢,然後在一個地方處理try-catch-finally,但它不會阻止SQL注入。通常最好的做法是什麼?或者是否有任何其他方式來構建可以防止SQL注入的查詢?在處理jdbc時關閉連接的最佳實踐是什麼
private static Connection getConnection() throws SQLException, URISyntaxException {
URI dbUri = new URI(System.getenv("DATABASE_URL"));
String username = dbUri.getUserInfo().split(":")[0];
String password = dbUri.getUserInfo().split(":")[1];
String dbUrl = "jdbc:postgresql://" + dbUri.getHost() + ':' + dbUri.getPort() + dbUri.getPath();
return DriverManager.getConnection(dbUrl, username, password);
}
您應該使用經過充分驗證的連接池,而不是創建自己的。檢出連接,將它傳遞給數據訪問對象,關閉finally塊中方法範圍內的所有其他JDBC資源,然後將連接返回到池 – duffymo
@duffymo我不太明白。這是我第一次在服務器端寫Java。請問您可以提供一些示例 – user1865027
您會將您的應用程序部署到什麼地方? Tomcat的?春季啓動? JBOSS?所有內置連接池。我建議使用它們。 – duffymo