关于SQL 注入

1 SQL注入案例

案例1:git

某网站后台管理平台测试环境 *********:50052/csop/main.dogithub

在登陆界面用户名输入 system' or '1'='1 ,密码随意输入.以后输入验证码,点击登陆,提示登陆出错,后访问上方提供的网址.此时以 system身份登陆系统.即完成一次简单的SQL注入.数据库

 

2 什么是SQL注入

所谓SQL注入,就是经过把SQL命令插入到提交或输入或请求的SQL字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来讲,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它能够经过在输入(恶意)SQL语句获得一个执行结果,而不是按照设计者意图去执行SQL语句。编程

在案例1中,经过恶意的SQL注入,登陆管理员帐号,从而提升本身的权限,后台执行SQL:服务器

从上述SQL中可能很清楚的看明白注入的SQL在密码错误的状况下是如何登陆system帐号.cookie

 

3 如何防止SQL注入?

测试角度:使用专业的测试工具,及时发现并处理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

相关文章
相关标签/搜索