制作网站时,SQL注入邪恶是什么?怎么注入邪恶法?

您所在的位置: &
T-SQL篇如何防止SQL注入的解决方法(1)
T-SQL篇如何防止SQL注入的解决方法(1)
所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令,对于这种行为,我们应该如何制止呢?本文将介绍一种方法,希望可以帮助有需要的朋友。
所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令,对于这种行为,我们应该如何制止呢?本文将介绍一种方法,希望可以帮助有需要的朋友。
1.什么是SQL注入
所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。
2.怎么进行SQL注入
关于怎么进行SQL注入,网上已经有很多文章详细介绍过了,可以参考博友滴答的雨的博文 《SQL注入攻防入门详解》,亲测有效。当执行完文中的5、6、7三步的时候,你会发现服务器上的安全保护措施都已是浮云,服务器也因此变成了名副其实的&肉机&。下面附上一张我在本机执行完文中描述的脚本后的效果截图(Win8 x64 操作系统):
微软的&不禁止即允许(Not forbidden is allow)&的做法使得操作系统像是服务器所穿的镂空礼物一样,美观但却有很多&漏洞&。好了,现在此小黑已经拥有了服务器的管理员权限,很显然元芳怎么看已经不重要了。
3.如何防止SQL注入的发生
滴答的雨已经在博文详细阐述了SQL Server数据库如何进行防注入的操作,这里不再赘述。这一篇我主要说一下对于一个使用拼接SQL进行查询操作的Web应用,怎么进行防注入操作。
先说一些前提,为什么我们要使用拼接SQL的方式进行查询?偷懒呗。这在开发过程中,看似省去了编写参数化部分的代码量,节省了时间和精力。但这样做的结果就是应用的安全性大打折扣,而且拼SQL方式创建的应用,后期的维护难度也很大。SQL参数化查询是最简单有效的避免SQL注入的解决方案,目前主流的ORM框架(MyBatis.NET/NHibernate/EntityFramework)都内置支持并且推荐使用这种方式进行持久层封装。
然而有数据库不支持参数化查询怎么办?是的,你没有看错,确实有这样的数据库存在。吐个槽先,个人认为,一切不支持参数化查询的数据库都是在&耍流氓&,这种天然的缺陷会让小黑们肆无忌惮地去&非礼&服务器,至少是数据库本身。在这样的情况下,我觉得其他功能做得再好也只能算是花拳绣腿,连最基本的数据都保护不了,那不等同于将劳动成果拱手让人。按照存在即合理的逻辑,我们暂且认为它是合理的。
内容导航&第 1 页: &第 2 页: &第 3 页:
关于的更多文章
随着网络时代的飞速发展,网络安全问题越来越受大家的关注,而SQL
网友评论TOP5
在本专题中,我们将带你深入了解这些无线安全问题,直击安全痛点……
随着互联网Web技术的全面应用,对Web应用防火墙来说,
RSA中国大会将促进中国信息安全专业人员与国际信息安
业内有一些厂商推出了无代理防毒的技术,但这类解决方
本书是一本介绍当前主流计算机网络应用技术的工具图书,全面总结了当前最主流、最基础的计算机网络应用,包括局域网和互联网应用
51CTO旗下网站网站被sql注入的修复方法
近日,网站频频被黑。在网站里莫名其妙的多出一篇文 章,还有多出一组贴图。正在纳闷是谁可以登陆我的后台发表文章和图片的时候,我的qq弹出消息,一个陌生人给我发消息,说我的网站有漏洞,还说是他弄了我 的网站。
近日,网站频频被黑。在网站里莫名其妙的多出一篇文 章,还有多出一组贴图。正在纳闷是谁可以登陆我的后台发表文章和图片的时候,我的qq弹出消息,一个陌生人给我发消息,说我的网站有漏洞,还说是他弄了我 的网站。不过还好,他给我详细说了黑我网站的方法,还提醒我好好修补修补,不然会被别人黑的。从他那得知,他用的是&啊D注入工具&,先找我的网站是否存 在可注入点,如果有,进行注入,能够破解得到后台密码。当晚我把那个&啊D注入工具&下载下来研究,知道了他注入的原理,对网页进行了一些修改,但是用工具一查,还是存在注入点。小虾无能,只好上网搜索,找到了如下的方法,按如下修改后,再用&啊D注入工具&检测,果然不存在注入点了。下面是修补方法:用工具检测到网站存在SQL注入点,那么如何进行修补呢?1.新建一个asp文件,写入以下代码,保存文件名为checkSQL.asp。 &%Dim Fy_Url,Fy_a,Fy_x,Fy_Cs(),Fy_Cl,Fy_Ts,Fy_Zx''''---定义部份 头------Fy_Cl = 3 ''''处理方式:1=提示信息,2=转向页面,3=先提示再转向Fy_Zx = &[color=Red]输入你的网页地址[/color]& ''''出错时转向的页面''''---定义部份 尾------On Error Resume NextFy_Url=Request.ServerVariables(&QUERY_STRING&)Fy_a=split(Fy_Url,&&&)redim Fy_Cs(ubound(Fy_a))On Error Resume Nextfor Fy_x=0 to ubound(Fy_a)Fy_Cs(Fy_x) = left(Fy_a(Fy_x),instr(Fy_a(Fy_x),&=&)-1)NextFor Fy_x=0 to ubound(Fy_Cs)If Fy_Cs(Fy_x)&&&& ThenIf Instr(LCase(Request(Fy_Cs(Fy_x))),&''''&)&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),&and&)&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),&select&)&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),&update&)&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),&chr&)&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),&delete%20from&)&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),&;&)&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),&insert&)&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),&mid&)&&0 Or Instr(LCase(Request(Fy_Cs(Fy_x))),&master.&)&&0 ThenSelect Case Fy_ClCase &1&Response.Write &&Case &2&Response.Write &&Case &3&Response.Write &&End SelectResponse.EndEnd IfEnd IfNext%&然后把此文件放到网站目录上去,然后在被发现有注入点的文件里,找到以下代码,注意,&***.***&为连接的文件,找到相关类似的代码即可,然后在后面添加一句要注意checkSQL.asp所放在的路径,对应修改。完成后再用工具后在扫一次,确定不在被发现SQL注入点后,问题解决。知识补充:所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击MySQL中SQL的单字节注入与宽字节注入 - 厦门seo文章讯 - 厦门seo公司:厦门网站建设/厦门网站推广/厦门做网站设计/厦门网站优化-好美旺厦门seo优化工作室
页面导航:首页> > 今日日期:
MySQL中SQL的单字节注入与宽字节注入
yi、单字节SQL注入
MYSQLdiSQL注入曾经由来已久,以下shi普遍采用di注入轨范:
1、zaiGET参数上加yige/*或者#(mysql专youdi注释),判别数据库能否shimysql,好比:.cn/article.php?id=1607 and 1=1/*
2、猜解某表di字段数,从order by 1不时更改到页面犯错为止,就能够获得该表di字段数
注入URL:.cn/article.php?id=1607 or 1=1 order by 10#
对应diSQL: select * from articles where id=1607 or 1=1 order by 10#&.
3、运用该表和用户表中止联系关系查询,zai文章列内外就能够看到用户名和密码le。当ye要猜解用户表di表名和用户名、密码di字段名,好比上yi步获得di字段数shi5:
注入diURL:.cn/article.php?id=1607 or 1=1 union select& username,password,1,2,3 from user
对应diSQL: select * from articles where id=1607 or 1=1& union select& username,password,1,2,3 from user
这样就能够zai界面上看到用户名和密码le。
解决法子:
过滤数据:这并不shi罗唆。zai适合di中心运用精采di数据过滤,能够减小年夜都平安隐患,以至能够消弭其中diyi部门。
将数据用括号包含:假如你di数据库许可(MySQL 许可),zai SQL 语句中,非论什么类型di数据都用单引号包含起来。
转义数据:yi些正当di数据可能zai无意中破损 SQL 语句自身di名目。运用 mysql_escape_string() 或者所运用数据库供给di转移函数。假如没you供给这样di函数,addslashes() yeshi不错di最后选择。
二、宽字节注入
宽字节注入yeshizai比来di项目中发现di问题,巨匠都知道%df& 被PHP转义(开启GPC、用addslashes函数,或者icovdeng),单引号被加上反斜杠\,酿成le %df\&,其中\di十六进制shi %5C ,那么往常 %df\& = %df%5c%27,假如轨范di默许字符集shiGBKdeng宽字节字符集,则MYSQL用GBKdi编码时,会觉得 %df%5c shiyige宽字符,ye就shi\&,ye就shi说:%df\& = %df%5c%27=\&,youle单引号就好注入le。好比:
以下为援用di内容:
$conn = mysql_connect(&localhost&,&root&,&2sdfxedd&);mysql_query(&SET NAMES &GBK&&);mysql_select_db(&test&,$conn);$user = mysql_escape_string($_GET['user']);$pass = mysql_escape_string($_GET['pass']);$sql = &select * from cms_user where username = &$user& and password=&$pass&&;$result = mysql_query($sql,$conn);while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {$rows[] = $}?&
则经由以下注入即可:
/login.php?user=%df&%20or%201=1%20limit%201,1%23&pass=
对应diSQLshi:
select * from cms_user where username = &\& or 1=1 limit 1,1#& and password=&
解决法子:就shizai初始化跟尾和字符集之后,运用SET character_set_client=binary来设定客户端di字符集shi二进制di。如:
以下为援用di内容:
mysql_query(&SET character_set_client=binary&);
页面标签:&&温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
人人都想上天堂,却没有人想死
LOFTER精选
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_095',
blogTitle:'SQL注入法攻击一日通(转)',
blogAbstract:'(此文章是对网上大量同类文章的分析与总结,并结合自己实施过程中的体会综合而成,其中有不少直接引用,没有注意出处,请原作者见谅) 随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根 据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。 SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:5,
publishTime:9,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'人人都想上天堂,却没有人想死',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 依赖注入 的文章

 

随机推荐