zoukankan      html  css  js  c++  java
  • 网站基本功-SQL注入基本介绍

    关于SQL语句的注入的原理和防范.这个是每个做网站的人应该具备的基本功.当年风靡一时的SQL注入,可是在那个年头大行其道.但是掌握其注入原理其实很容易对这个漏洞进行封杀.记得我高中的那个时代,看的电脑报里面就是大篇的对于SQL注入的介绍,只是那个时候自己不能很好的理解,只留下来一个名叫明小子的注入工具.好像是当时黑客必备的利器.写下此篇文章,完全是基于个人学习MySQL数据库时候的理解然后联系以前自己对黑客的了解.然后才想起提笔写下这篇日志.

              首先关于SQL注入的漏洞,这个应该是做SQL数据库的失误导致,众所周知,只要是人写出来的软件和程序就绝对会有漏洞.所以各种软件都会过一段时间就会出来一些升级补丁,微软就是最好的证明.通过不断地测试发现漏洞然后进行亡羊补牢.还有一个原因就是可能是开发SQL的人,自己给自己留下的后门.为自己入侵数据库埋下的伏笔.当然他可能的想法不是入侵别人的数据库,而是对自己的数据库进行非常规路径的管理.比如忘记密码情况下的管理.和那年暴风爆出的后门一样.那就是暴风给自己故意留下的后门.
          关于SQL注入的原理,无非就是利用提交特殊的字符,通过非正常的手段进入数据库,对数据库进行增删改查.相当于取得管理员权限.最经典的测试无非就是or 1=1;and1=2;这个经典测试字符.而且SQL注入应该是基于GET提交数据方式入侵的最大的元凶.对于以GET提交数据的网站,这个问题就尤其突出.而改用POST提交时候应该可以大大杜绝这种注入.其次就是网站开发人员,对SQL语句的运用的没有考虑的情况下,也是容易导致SQL入侵的,毕竟有缝的蛋,才会招惹苍蝇的.
         下面就以一个简单的登陆的页面,对SQL进行简单的分析.
          首先在登录的html界面,如果选择的提交的方式是Method=get;然后再处理数据php程序的过程中是使用的简单的$res=select * from menber where id = $id;再通过提交的密码和$res,进行比较.(这里为了简单,就不涉及MD5()加密.其实一般的网站也是用md5这一句简单的数据库加密算法进行数据加密的.)然后通过比对成功后跳转到要到达的登陆的成功界面,否则就跳转到重新登陆的界面.通过header(Location:*******?)这个来重定向.一般在登陆成功也是通过Header这个重定向,然后这里就一般就是通过get方式提交数据啦.直接定向去成功的页面sucesful.php?name=$name&password=$password.然后这里就是留下注入大的漏洞啦.本来不应该出现的问题,这里就出来啦.要是别人没有密码,只有一个简单的测试正确的id号,然后通过乱输密码并且在后面添加一条or 1=1;然后就会出现很神奇的事情.即使密码没有正确,仍然会定向到成功的页面.而不是定向到重新登陆的界面.
             然后要消除这个注入,其实也比较容易,在发生大规模的SQL漏洞以后,所有的网站基本都已经搞定这个漏洞啦.只要需要对SQL语句进行简单的修改,就可以杜绝SQL注入.第一个就是通过预编译的方法来杜绝.还有注意就是通过POST来提交数据.
          好像就是这样了..到时候想起什么再继续跟进深入.先这样啦..下次写写自己对现在网站一个很实用的防盗链技术的使用...
     
  • 相关阅读:
    什么样的代码称得上是好代码?
    九年程序人生 总结分享
    Docker入门 第一课 --.Net Core 使用Docker全程记录
    阿里云 Windows Server 2012 r2 部署asp.net mvc网站 平坑之旅
    Visual studio 2015 Community 安装过程中遇到问题的终极解决
    Activiti6.0 spring5 工作流引擎 java SSM流程审批 项目框架
    java 进销存 库存管理 销售报表 商户管理 springmvc SSM crm 项目
    Leetcode名企之路
    24. 两两交换链表中的节点
    21. 合并两个有序链表
  • 原文地址:https://www.cnblogs.com/tangpanpan23/p/3477993.html
Copyright © 2011-2022 走看看