码迷,mamicode.com
首页 > 数据库 > 详细

关于sql注入

时间:2016-03-29 21:17:51      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

最近公司内的一段代码被安全中心扫出了 sql 注入漏洞,hacker 可以直接通过构造参数获取数据库结构、内容,甚至写数据,危害非常大,当然我们也在第一时间修复了,幸好没有造成太大影响,这里做一下总结:

1. sql 注入原理

所谓 sql 注入就是通过把 sql 命令插入到 Web 表单或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 sql 命令的目的。举例:

 1 -- 期望客户输入客户 id 查询客户信息,如 id = 5,查询语句为:
 2 
 3 select * from User.user where id = 5;
 4 
 5 -- 结果客户输入的客户 id 为 " 1 or 1",查询语句为:
 6 
 7 
 8 select * from User.user where id = 1 or 1;
 9 
10 -- 结果是全部的客户信息都被 dump 出来

 

2. 防范措施

  • 参数校验
    • 参数校验!参数校验!参数校验!参数校验做好了基本就没有了 sql 注入,假若本来期望的就是整形,那么就严格校验参数是整形,不是就拒绝。
    • 这里要特别注意下字符串,web 开发语言都有类似 sql escape 的函数来预处理一下字符串,那么字符串参数传入时一定要用这类函数预处理。php 是 mysql_escape_string 和 mysql_real_escape_string
  • 使用成熟的 orm
    • 使用成熟的 orm 而不是通过裸写 sql 的方式访问数据库。成熟 orm 一般都会有防止 sql 注入的逻辑,且逻辑清晰易于管理。裸写 sql 晦涩难懂,容易出错,尽量避免。
  • 限制业务代码 sql 操作权限
    • 业务逻辑代码的 sql 操作权限只限制在增、删、查、改,而不要其他的 drop 等危险操作,甚至于删数据的操作都可以改为变更数据的状态。

关于sql注入

标签:

原文地址:http://www.cnblogs.com/lian4187/p/5334279.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!