顾名思义,SQL注入就是将SQL语句被注入到应用程序中。攻击者可以利用SQL注入达到越权获取或修改数据甚至执行任何系统命令的目的。SQL注入是广泛存在的危险性极高的应用程序漏洞。
下面的代码用于完成登录验证,但未对用户输入进行充分的有效性检查和元字符的转义,从而带来了SQL注入弱点:
conn = pool.getConnection( );
String sql = "select * from user where username='"
+ username +"' and password='" + password + "'";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
if (rs.next()) {
loggedIn = true;
out.println("Successfully logged in");
} else {
out.println("Username and/or password not recognized");
}
|
攻击者可以输入含有SQL元字符的用户名改变原有SQL语句的功能/意图。如通过输入下面的用户名
和空格口令,程序中生成的SQL语句变为
select * from user where username='admin' OR '1'='1' and password=' '
|
因为上面的SQL查询语句永远返回用户名为admin的记录,所以攻击者不需要提供正确的口令就能够登录。通过同样的方法可以使这段程序执行任何SQL语句。
避免SQL注入的关键在于避免使用字符串动态拼接SQL,而是借助参数化变量生产SQL。具体的在java开发中使用PreparedStatement,如
String selectStatement = "SELECT * FROM User WHERE userId = ? ";
PreparedStatement prepStmt = con.prepareStatement(selectStatement);
prepStmt.setString(1, userId);
ResultSet rs = prepStmt.executeQuery();
|
但要注意虽使用PreparedStatement,而未使用参数化的错误做法,如下:
String strUserName = request.getParameter("Txt_UserName");
PreparedStatement prepStmt = con.prepareStatement("SELECT * FROM user WHERE userId =
'+strUserName+'");
|
分享到:
相关推荐
C# MVC 过滤器防止SQL注入
jsp 防止sql注入jsp 防止sql注入jsp 防止sql注入jsp 防止sql注入
mybatis如何防止SQL注入
主要介绍了使用Python防止SQL注入攻击的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无...下面这篇文章主要给大家介绍了关于Python中防止sql注入的方法,需要的朋友可以参考下。
c# 全站防止sql注入,利用Global.asax、Appcode中添加类的方法
防止sql注入引起的网络安全的解决措施采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setString方法传值即可:
详细的介绍了防止sql注入攻击,内附asp.net 源码和vb.net源码。是初学者不错的选择。希望能够帮助到你。
java防止SQL注入对一个系统十分的重要,系统没有安全保障,那再好的系统也是扯淡。在平时系统开发中一定注意安全漏洞。
C#防止SQL注入式攻击C#防止SQL注入式攻击
Mybatis 如何防止 sql 注入?mybatis 拦截器了解过吗,应用场景是什么答案 Mybatis 如何防止 sql 注入?mybatis 拦截器了解过吗,应用场景是什么答案
Java防SQL注入,最简单的办法是杜绝SQL拼接,经验和技巧之谈,不错推荐。
安全编译代码,防止sql注入,防止网站被黑。防止sql注入,数据库数据丢失。
整站防止SQL注入式入侵 - 整站防止SQL注入式入侵 -
防止SQL注入式攻击例程序,可以参考学习使用。。。。。。。。。。。
java版防止sql注入的filter 如果好用,别忘记了来评论一下,受益于更多的人
网站开发中最重要的就是安全问题,本资源是本人应用中总结出来的防止sql注入的方法
SQL注入 如何防止SQL注入SQL注入 如何防止SQL注入SQL注入 如何防止SQL注入
asp防止SQL注入和SQL注入资料;asp;asp sql;asp防注入asp防止SQL注入和SQL注入资料;asp;asp sql;asp防注入asp防止SQL注入和SQL注入资料;asp;asp sql;asp防注入 asp的朋友可以看看 分享
【ASP.NET编程知识】ASP.NET过滤类SqlFilter,防止SQL注入 .docx