Sql注入产生原因及威胁

1.Sql 注入产生原因及威胁:

当我们访问动态网页时, Web 服务器会向数据访问层发起 Sql 查询请求,如果权限验证通过就会执行 Sql 语句。
这种网站内部直接发送的Sql请求一般不会有危险,但实际情况是很多时候需要结合用户的输入数据动态构造 Sql 语句,如果用户输入的数据被构造成恶意 Sql 代码,Web 应用又未对动态构造的 Sql 语句使用的参数进行审查,则会带来意想不到的危险

2.Sql 注入带来的威胁主要有如下几点

  • 猜解后台数据库,这是利用最多的方式,盗取网站的敏感信息。
  • 绕过认证,列如绕过验证登录网站后台。
  • 注入可以借助数据库的存储过程进行提权等操作

3.解决sql注入

那我们怎么该避免这种情况呢?这时候就需要用到PreparedStatement对象。

PreparedStatement是Statement的子类,不同的是,PreparedStatement使用预编译机制,在创建PreparedStatement对象时就需要将sql语句传入,传入的过程中参数用?替代,这个过程会导致传入的sql被进行预编译,然后再调用PreparedStatement的setXXX将参数设置上去,由于sql语句已经经过了预编译,再传入特殊值也不会起作用了。

PreparedStatement优点:

  • 可以防止sql注入攻击
  • 采用预编译机制, 效率高
  • 如果发送的sql语句主干部分相同, 主干部分只需要写一次, 每次发送的只是参数部分.

所以用PreparedStatement对象处理SQL注入

你可能感兴趣的:(MySQL,sql,数据库,oracle)