我看数据安全,服务用户,符合常理

       SIMS已经完工一段时间了,但是对其的学习还远远不够。通过自己的调试和龙哥的验收,这里出现了很多问题,在这里我从问题的角度出发,总结一下SIMS,因为错误是我们的短板,是我们的不足,我们可以犯错误,但是不要重复犯错误就行。当然一些问题可以扩延到更多的系统,它不仅仅是针对SIMS系统的,而是一些做项目的一些共性的问题,希望对大家有所帮助!

 

       这里我把问题大概归结为了三大方面:

 

        一,数据安全方面:以后我们做的软件一般都和数据库连接,这样对于数据库的安全性问题就是非常需要重视了。在这个系统中,遇到最严重的一个问题就是,SQL语句注入。因为在这个系统的主体部分就是对数据库数据的增删改查,但是这是需要不同权限用户才可以对其进行操作呢。下边我举个简单例子:

 

我看数据安全,服务用户,符合常理_第1张图片

 

 

       大家看这个界面,一般情况,我们是通过已经存储的用户和密码才能进入管理系统界面。

        我们这阶段访问数据库的代码:

txtSQL = "select* from user_Info where user_ID = '" & txtusername.text & _"'and密码='" & txtpassword.text & "'"

 

      SQL注入:在对应的输入框中输入 '_'or'_'='_'其中_代表任意字符我们就可以登录进去。

      

      原因:txtSQL = "select * from user_Info where user_ID = '" &'1'or'1'='1' & _"'and 密码='" &  '1'or'1'='1' &"'"

      大家注意看这是我通过SQL server2008查询得到的结果:

 

我看数据安全,服务用户,符合常理_第2张图片

 

      他是把你数据库中的所有数据全部查出,当然能进去!而根本原因就是出在or这个字眼上,意思是查询的信息满足账户=2或者2=2,当然2=2为真值,所以会查出所有结果。

 

     解决方法:1,因为通过这样的查询,他是查询出来符合2=2的结果,也就是所有的结果,这里我们可以限制其查出结果的数量,来防止SQL注入:语法如下

 

 If mrc.RecordCount > 1 Then’如果查出来的条数多以1,则弹出提示框!            
         MsgBox "非法登陆!"
             Exit Sub
 End If

 

                           2,因为在使用SQL语句注入时,他用到了很多标点符号,例如,单引号 ',等号=……而我们在输入框的输入一般不会出现这种情况,这里我们就可以利用replace函数把输入这些符号给替换掉,这样也就可以避免了:语法如下:

 

Public Function inputstring(ByVal mystr As String) As String’定义一个替换函数,替换掉里边的符号
  mystr = Trim(mystr)
   mystr = Replace(mystr, "'", "''")
   mystr = Replace(mystr, "or", " ")
   mystr = Replace(mystr, "and", "  ")
   mystr = Replace(mystr, "=", " ")
   mystr = Replace(mystr, ";", " ")
End Function


      将需要替换的文本写成inputstring(*****)的形式,就可以防止这些字符的输入,当然我认为这并不是根本的。

      更过关于SQL语句注入的文章,看龙哥的博客:

 

                                          http://blog.csdn.net/xiaoxian8023/article/details/6720018

                                                               http://blog.csdn.net/xiaoxian8023/article/details/6720031

                                           http://blog.csdn.net/xiaoxian8023/article/details/6720040

 

     当然数据的安全,还包括很多,这里我遇到了这点,就拿这点谈谈,这要我们考虑到这些情况才会防止黑客的攻击。

 

      二,方便用户角度:

 

             1,必须要用软件的说明,即使软件再简单,也要有帮助。因为帮助就是用户使用这款软件的指南针。

             2,对于一些确定,取消等按钮需要我们添加快捷键;

             3,对于一些重要的操作(如,删除,退出等),需要我们给以提示框提示,给用户一个思考的机会。

             4,对于listbox的一些选择,不仅需要单击添加或删除按钮,双击对象我们也应该实现添加删除,因为很多用户觉得这样方便。

 

我看数据安全,服务用户,符合常理_第3张图片

 

        …………

       总而言之,就是为了使用户用着软甲更容易上手,更方便操作,需要我们多思考思考,尤其站在用户的角度去想一些问题。

 

 

        三,从合理,符合常规的角度:

 

             1,对于,一些说明帮助等,我们要做到的是用户不能给以修改,这些东西应该是只读类型的。

             2 ,对于用户的登录密码我们要考虑到空格等一些特殊的字符。要是那些不能用的话,要给出说明。

             3,对于一些姓名,设定好的班号,年级号,我们要做到的限定这些输入框,只能是选择,例如性别只能选择男女,而不能输入别的内容。

             4,另外,每个输入框,显示框,他会对应数据库中 某个表格,这里我们要做的根基实际情况限定输入的字符长度,字符类型,否则出现类型错误,或者数据过长,而引起软件崩溃。

             5,对于数据库中没有数据的特殊情况我们也要考虑到,这里我们可以利用记录集mrc的recordcount属性来判断一下,如果是空可以给出提示!

            ……

 

       总之,对于一些软件,一些常规的合理的,符合大众的东西,我们要给出,这是先把最基本的实现,对于创新是我们实现这个以后的事!

 

 

       SIMS完工了,不代表我们学习这个工程已经好了,我们要做的是不断的反复,不断从一个工程找更多的相同点,使之对我们以后的学习也好,做工程也好,产生一定的影响,积累一定个经验!

 

 

你可能感兴趣的:(sql,sql,数据库,server,function,String,user)