深爱那片海 发表于 2015-1-16 22:31:58

MYSQL编程:不妥编写SQL语句招致体系不平安

使用它开发程序也是非常简单的。”平安|语句在一样平常的多用户使用体系中,只要具有准确的用户名和暗码的用户才干进进该体系。我们一般必要编写用户登录窗口来把持用户利用该体系,这里以VisualBasic+ADO为例:

  1、毛病的发生

  用于登录的表

  Users(name,pwd)

  创建一个窗体Frmlogin,其上有两个文本框Text1,Text2和两个命令按钮cmdok,cmdexit。两个文本框分离用于让用户输出用户名和暗码,两个命令按钮用于“登录”和“加入”。

  1、界说AdoConnection工具和ADORecordSet工具:

OptionExplicitDimAdoconAsADODB.ConnectionDimAdorsAsADODB.Recordset

  2、在Form_Load中举行数据库毗连:

SetAdocon=NewADODB.ConnectionAdocon.CursorLocation=adUseClientadocon.Open"Provider=Microsoft.jet.OLeDB.4.0.1;DataSource="&&_App.Path&&"est.mdb;"cmdok中的代码DimsqlstrAsStringsqlstr="select*fromusersswheresname="&&Text1.Text&&_"andpwd="&&Text2.Text&&""Setadors=NewADODB.RecordsetSetAdors=Adocon.Execute(sqlstr)IfAdors.Recordcount>0Then//或IfNotAdors.EOFthen....MsgBox"Pass"//经由过程考证Else...MsgBox"Fail"//未经由过程考证Endif

  运转该程序,看起来如许做没有甚么成绩,可是当在Text1中输出恣意字符串(如123),在Text2中输出aora=a时,我们来看sqlstr此时的值:

select*fromusersswheresname=123andpwd=aora=a

  实行如许一个SQL语句,因为or以后的a=a为真值,只需users表中有纪录,则它的前往的eof值必定为False,如许就容易地绕过了体系关于用户和暗码的考证。

  如许的成绩将会呈现在一切利用select*fromusersswheresname="&&name&&"andpwd="&&password&&"的各类体系中,不管你是利用那种编程言语。

  2、毛病的特性

  在收集上,以上成绩特别分明,笔者在很多网站中都发明能利用这类体例进进必要举行用户名和暗码考证的体系。如许的一个SQL毛病具有以下的特性:

  1、与编程言语或手艺有关

  不管是利用VB、Delphi仍是ASP、JSP。

  2、潜伏性

  现有的体系中有相称一部分存在着这个毛病,并且不容易发觉。

  3、伤害性

  不必要举行用户名或暗码的推测便可容易进进体系。

  3、办理毛病的办法

  1、把持暗码中不克不及呈现空格。

  2、对暗码接纳加密体例。

  这里要说起一点,加密不克不及接纳过于复杂的算法,由于过于复杂的算法会让人可以机关出形如aora=a的密文,从而进进体系。

  3、将用户考证和暗码考证分隔来做,先辈行用户考证,假如用户存在,再举行暗码考证,如许一来也能办理成绩。
MySQL部署迅速,因此移植过程不会导致生产中断。而且,较短的学习曲线可以让你的系统管理员迅速掌握它的运行和维护。而且,MySQL的易于维护和管理意味着目前的职员可以处理目前的工作。

老尸 发表于 2015-1-19 16:12:56

原来公司用过MYSQL自己也只是建个表写个SQL

兰色精灵 发表于 2015-1-19 16:12:56

我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力

蒙在股里 发表于 2015-1-28 05:35:39

学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了!

仓酷云 发表于 2015-2-5 14:26:01

你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。

冷月葬花魂 发表于 2015-2-12 06:36:18

分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。

admin 发表于 2015-3-2 23:38:01

再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。

乐观 发表于 2015-3-11 07:27:05

一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。

分手快乐 发表于 2015-3-17 23:10:18

两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书

谁可相欹 发表于 2015-3-25 07:05:38

习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。
页: [1]
查看完整版本: MYSQL编程:不妥编写SQL语句招致体系不平安