|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
MySQL部署迅速,因此移植过程不会导致生产中断。而且,较短的学习曲线可以让你的系统管理员迅速掌握它的运行和维护。而且,MySQL的易于维护和管理意味着目前的职员可以处理目前的工作。在一样平常的多用户使用体系中,只要具有准确的用户名和暗码的用户才干进进该体系。我们一般必要编写用户登录窗口来把持用户利用该体系,这里以VisualBasic+ADO为例:
1、毛病的发生
用于登录的表:Users(name,pwd)。
创建一个窗体Frmlogin,其上有两个文本框Text1,Text2和两个命令按钮cmdok,cmdexit。两个文本框分离用于让用户输出用户名和暗码,两个命令按钮用于“登录”和“加入”。
1、界说AdoConnection工具和ADORecordSet工具:
以下为援用的内容:
OptionExplicit
DimAdoconAsADODB.Connection
DimAdorsAsADODB.Recordset
2、在Form_Load中举行数据库毗连:
以下为援用的内容:
OptionExplicit
DimAdoconAsADODB.Connection
DimAdorsAsADODB.Recordset
2、在Form_Load中举行数据库毗连:
SetAdocon=NewADODB.Connection
Adocon.CursorLocation=adUseClient
adocon.Open"Provider=Microsoft.jet.OLeDB.4.0.1;DataSource="&&_
App.Path&&"est.mdb;"
cmdok中的代码
以下为援用的内容:
DimsqlstrAsString
sqlstr="select*fromusersswheresname="&&Text1.Text&&_
"andpwd="&&Text2.Text&&""
Setadors=NewADODB.Recordset
SetAdors=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、将用户考证和暗码考证分隔来做,先辈行用户考证,假如用户存在,再举行暗码考证,如许一来也能办理成绩。
DBaaS和其他云服务之间的区别是:DBaaS专注于提供类似关系数据库管理系统RDBMS(比如SQLServer、MySQL和Oracle)的数据库功能。事实上,RDBMS已被证明是一种适合于在各种情况下管理结构化数据的有效工具。 |
|