前言:
现时大家对“java连接sql”大概比较着重,小伙伴们都想要知道一些“java连接sql”的相关内容。那么小编同时在网络上网罗了一些有关“java连接sql””的相关知识,希望咱们能喜欢,各位老铁们一起来了解一下吧!JAVA漏洞代码示例
以下代码中的snippet连接了一个Java应用程序,需要执行一条SQL语句来回收由用户提供的主机。
String query = "SELECT account_number, account_balance FROM customer_data WHERE account_owner_id = " + request.getParameter("id");try { Statement statement = connection.createStatement( ... ); ResultSet res = statement.executeQuery( query );}
由于SQL查询通过拼接用户输入的id建立查询语句,攻击者就可以通过注入篡改其查询,导致其他用户的数据消失,甚至影响到数据库的真实性。
例如,注入123 or 1=1;-- 到id字段中,SQL的查询就变为:
SELECT account_number, account_balance FROM customer_data WHERE account_owner_id = 123 OR 1=1;--
这个查询操作将返回所有customer_data表格中的数据,因为 id=123 or 1=1永远为真,且后面的判断代码被注释符”--“注释掉了,不在被执行。
如何防护
Java提供了连接对象数据库的PreparedStatement方法,在大多数数据库技术技术中都支持这项功能。
String custid = request.getParameter("id"); String query = "SELECT account_number, account_balance FROM customer_data WHERE account_owner_id = ?"PreparedStatement pstmt = connection.prepareStatement( query );pstmt.setString( 1, custid); ResultSet results = pstmt.executeQuery( );
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #java连接sql