网站安全 对预防SQL注入的建议_第1页
网站安全 对预防SQL注入的建议_第2页
网站安全 对预防SQL注入的建议_第3页
网站安全 对预防SQL注入的建议_第4页
网站安全 对预防SQL注入的建议_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网站安全 对预防SQL注入的建议 当你打开百度新闻搜索黑客关键字时能看到什么?没错,有太多知名的网站被黑客攻破,有太多牛X的IT系统对黑客来说如入无人之境 进入WEB2.0时代,我们的IT当真变得如此脆弱了吗?记得在一次有关安全的研讨会上,有专家谈到了这样的观点:互联网在设计之初,也没能预想到互联网会发展成现在的庞大规模,如果互联网依然只应用于教育网、科研网,就不会有这么多的问题,难道我们真得需要在重新织一张网?虽然这只是一种假设,也可能是未来创新的一个星星之火,但在现阶段,还是让我们收回思想的翅膀,来解决实际中的问题吧! 网站安全在经历了2011年底的泄密门之后,得到了各方面的重视,互联网企业开始重新审视自身的安全性、安全厂商开始更多的关注这方面的问题并推出了相应的解决方案、政府也在从法律法规方面对网站安全进行了相关的规定(未证实消息:中国的萨班斯法案在今年也将出台)。 近日,小编从国内知名的漏洞报告平台WooY上得到了以下几张图,图中标注的是各企业网站所存在的漏洞类型和造成系统漏洞的主要原因: 从上图我们可以不难找出企业网站存在安全风险的几个同共点:XSS跨站脚本攻击、SQL注入漏洞、后台弱口令、系统/服务运维配置不当以及系统/服务补丁不及时下面我们就从这主要的几点开始和大家一起探讨: 1、 XSS跨站脚本攻击 上图所列出的互联网企业有门户网站、行业网站、视频网站、旅游网站等,从不同类型的网站我们可以看出,XSS跨站脚本攻击是黑客使用最普遍的攻击方式,这里我们为大家整理了XSS跨站脚本攻击的原理,希望能对大家有帮助。 小白一下:XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。 跨站脚本攻击最大的魅力是通过HTML注入劫持用户的浏览器,任意构造用户当前浏览的HTML内容,甚至可以模拟用户当前的操作。这里介绍一种新式攻击方法:XSS Phishing(跨站脚本钓鱼攻击),利用这种方式可以直接盗取用户的密码,下面我就拿最近PHPWIND论坛所暴出的XSS做一下演示,PHPWIND对上传文件名没有处理严格,导致可以写入跨站脚本。 先做一个简单的测试,发一篇新帖,在附件中随意写入一个本地路径加带的文件名,如图一 发帖成功后我们会发现,帖子附件名已经没有了,如图二 我们查看当前页面的源代码会发现已经写到页面内,如图三 当然要写入脚本,PHPWIND还是做了限制,文件名中出现(,/字符将会被过滤,不过可以利用HTML转码的方式绕过这个限制,如转换成 TABLE BACKGROUND= string sql = select * from news where ColID= + id; 如果传递过来的 id是我们想像的 数字(比如168),那么自然不会有什么问题。但是如果传递过来的id是168 delete from table 的话,那么sql的值就变成了select * from table where ColID=168 delete from news.对于SQL Server来说是支持一次提交多条SQL语句的,这个为我们提供了方便之余也为SQL注入敞开了大门。显然如果这条SQL语句被执行的话,那么news表里的记录就都没有了。 那么如何预防呢?很简单,因为ColID字段的类型是int的,那么我们只需要验证一下传递过来的id是不是整数就可以了。是整数就不存在注入;如果不是那么就有可能存在注入。即使不存在注入,把一个不是整数的id拼接进去也会造成执行错误。所以说不管是不是为了预防SQL注入,也都应该验证id是不是整数。 验证方法嘛,可以用TryParse,可以用正则,也可以自己写函数验证。但是不建议用try异常的方式,因为这个有效率问题。 这里还有一个特殊情况,就是对于批量删除这类的会传递过来多个数字,比如1,2,3,10,这个也需要验证一下,万一有人利用这个漏洞呢。至于验证方法也很简单,自己写个函数就ok了。 (2)、日期时间 这个和数字的情况是一样的,验证是不是日期时间即可。 (3)、字符串 最麻烦、争议最大的就是这个了。 先看一下如何注入,比如我们先要按照新闻标题来进行查询,可能写的代码: string key = txtTitle.Text; string sql = select * from news where title like % + key + %; 这个又是如何注入的呢?我想先问大家一个问题:如果key的值永远都不会包含单引号,那么会不会被注入进来? 那么用了单引号又是如何注入的呢?假设key= delete from news - ,那么sql的值就是 select * from news where title like % delete from news - . 先用一个单引号和前面的单引号组成一对封闭的单引号,这一对单引号内部(%)就作为字符串处理,而外面的就被作为SQL语句处理,而第二个单引号被 -给注释掉了,这样就保证了整个sql语句的正确性。 这是注入的一种方法,那么如何来防止呢?想想刚才的问题,如果没有单引号是不是就天下太平了呢?对于这种情况(前面的数字的情况不算),到目前为止我是没发现不用单引号,还能够注入进来的方法。也许是我孤陋寡闻吧,不知道各位高手是否知道对于这种情况,不用单引号还能注入进来的方法。 既然找到了罪魁祸首,那么就好办了,把单引号干掉就ok了。key = key.Replace(, );这时候sql的值就是 select * from news where title like % delete from news -. 对于SQL 来说在一对单引号内部的两个单引号表示一个字符串形式的单引号。这样我们就把罪魁祸首改造成了字符串了。在一对单引号内的-也是普通的字符串而不代表注释。 罪魁祸首是单引号,想不明白为什么有许多人都去过滤 delete、update这一类的关键字,他们都是安善良民呀,他们是很冤枉的。当然了,如果前提是程序都已经写好了,不能修改内部代码,那就另当别论了。至于-顶多算是帮凶,如果您不放心的话,把他处理了也行。 总结:数字、日期时间的,验证类型;字符串的,处理好单引号。另外为了安全起见,不要用sa连接数据库,xp_cmdshell这一类的有危险的扩

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论