什么是SQL注入攻击?

1 什么是SQL注入?

所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。当应用程序使用输入内容来构造动态SQL语句以访问数据库时,会发生SQL注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生SQL注入。 黑客通过SQL注入攻击可以拿到网站数据库的访问权限,之后他们就可以拿到网站数据库中所有的数据,恶意的黑客可以通过SQL注入功能篡改数据库中的数据甚至会把数据库中的数据毁坏掉。

2 SQL注入的产生原因

SQL注入攻击是利用是指利用设计上的漏洞,在目标服务器上运行SQL语句以及进行其他方式的攻击,动态生成SQL语句时没有对用户输入的数据进行验证是SQL注入攻击得逞的主要原因。对于Java数据库连接JDBC而言,SQL注入攻击只对Statement有效,对PreparedStatement是无效的,这是因为PreparedStatement不允许在不同的插入时间改变查询的逻辑结构。

例如验证用户是否存在的SQL语句为:用户名’and pswd='密码

如果在用户名字段中输入:'or 1=1 或是在密码字段中输入:'or 1=1 将绕过验证,但这种手段只对只对Statement有效,对PreparedStatement无效。

相对Statement有以下优点:

  • 防注入攻击
  • 多次运行速度快
  • 防止数据库缓冲区溢出<

你可能感兴趣的:(网络攻击,数据库)