案例1:git
某网站后台管理平台测试环境 *********:50052/csop/main.dogithub
在登陆界面用户名输入 system' or '1'='1 ,密码随意输入.以后输入验证码,点击登陆,提示登陆出错,后访问上方提供的网址.此时以 system身份登陆系统.即完成一次简单的SQL注入.数据库
所谓SQL注入,就是经过把SQL命令插入到提交或输入或请求的SQL字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来讲,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它能够经过在输入(恶意)SQL语句获得一个执行结果,而不是按照设计者意图去执行SQL语句。编程
在案例1中,经过恶意的SQL注入,登陆管理员帐号,从而提升本身的权限,后台执行SQL:服务器
从上述SQL中可能很清楚的看明白注入的SQL在密码错误的状况下是如何登陆system帐号.cookie
测试角度:使用专业的测试工具,及时发现并处理SQL注入问题框架
从网管角度:记录网站相关登陆信息,及进发现并跟进SQL注入问题工具
从DBA角度:控制执行SQL帐号权限,按期巡检,能够在问题出现时极大的下降损失.post
从开发者角度:性能
使用参数化执行SQL,而不是拼接SQL语句的方式执行SQL.除了有效防止SQL注入外,参数化执行SQL具备执行效率高,性能优秀,等各类优势.强列建议.
对输入参数(包括不限于:post请求,get请求,cookie注入,c/s 中客户端请求,等)进行验证,
重要的操做采用防护式编程思想在服务端执行,牢记任何客户端都是不可信任的.
出错后暴露尽量少的错误信息,为SQL注入制造障碍.(好比500错误页面)
(案例1中SQL注入缘由出在框架搭建者未考滤全面致使的)
其它资料:
阿里的druid对SQL注入有相关防护措施,能够参考https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE-wallfilter