防止sql拼接的Java方法_JAVA程序防止SQL注入的方法
第一種采用預編譯語句集,它內置了處理SQL注入的能力,只要使用它的setString方法傳值即可:
Java代碼
String sql= "select * from users where username=? and password=?;
PreparedStatement preState = conn.prepareStatement(sql);
preState.setString(1, userName);
preState.setString(2, password);
ResultSet rs = preState.executeQuery();
String sql= "select * from users where username=? and password=?;
PreparedStatement preState = conn.prepareStatement(sql);
preState.setString(1, userName);
preState.setString(2, password);
ResultSet rs = preState.executeQuery();
第二種是采用正則表達式將包含有 單引號('),分號(;) 和 注釋符號(--)的語句給替換掉來防止SQL注入:
Java代碼
public static String TransactSQLInjection(String str)
{
return str.replaceAll(".*([';]+|(--)+).*", " ");
}
userName=TransactSQLInjection(userName);
password=TransactSQLInjection(password);
String sql="select * from users where username='"+userName+"' and password='"+password+"' "
Statement sta = conn.createStatement();
ResultSet rs = sta.executeQuery(sql);
public static String TransactSQLInjection(String str)
{
return str.replaceAll(".*([';]+|(--)+).*", " ");
}
userName=TransactSQLInjection(userName);
password=TransactSQLInjection(password);
String sql="select * from users where username='"+userName+"' and password='"+password+"' "
Statement sta = conn.createStatement();
ResultSet rs = sta.executeQuery(sql);
安全性:Java只要使用PreparedStatement,就不會存在注入問題。至今還沒遇到用了PreparedStatement還會被注入的情況。
總結
以上是生活随笔為你收集整理的防止sql拼接的Java方法_JAVA程序防止SQL注入的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谷歌五笔输入法电脑版_“五笔输入法”打字
- 下一篇: 常用python分析数据包pipinst