牛腩学习---SQL注入

从上个星期6开始,几乎每天都看两集牛腩视频。自我感觉这个讲牛腩的老师讲得特别细致,几乎是手把手的教你如何做一个系统。正是由于这个老师教学的认真,让我明白了很多在重构的时候不是非常理解的一些概念,下面就让我来说说吧!

基础总结:

在前5集的时候,这个老师讲了数据库的设计和一些UML图的讲解!虽然和我学习的内容有一点不同,但是慢慢的听讲,感觉接受还是挺容易的!到了6-8集就可以加深了,讲解了sqlhelper类的编写。一步一步很明白的让你明白为什么要编写这个sqlhelper类,以及如何对这个类进行优化!在这里我写代码的时候遇到了一个问题:就是如何将数据库的字段设置为自增长???
方法很简单:
第一种:直接对数据库操作:选中要修改的字段,下面会出现资料行属性,里面有个识别规格,把"否"改为"是"就可以啦!
第二种:就是用SQL语句进行建立的时候:如下图:
 
在这里面有一个identity就是用来设置字段的自增长的!
以前只是知道将数据库连接字符串写到配置文件中可以方便更换数据库连接语句,但是一直不明白在不打开代码窗体的情况下在哪里可以进行更换,这不视频中就有清晰的讲解,具体看下图:




理解新知识:


什么是SQL注入?

在下面的一个简单界面中,只有一个文本框和一个按钮控件:



如果我们在箭头处填写:“体育新闻”的话,运行后显示:

(先删除id为2的一条记录)
那么如果我们在箭头处输入如下格式呢?


运行后显示:


由实践可以知道,如果把这句话写到数据库中运行的话会达到:既增加了一个娱乐新闻字段,又删除了id为3的这一行!这样造成的问题就是:可以在界面直接对数据库进行操作。
用一句话表示就是:在界面上构造数据库语句来对数据库进行操作的方法就叫做SQL注入!

安全隐患:

SQL注入造成的问题就是:如果知道数据库的某一个表的话(这是很方便的,有专门的软件),我们可以通过界面直接对数据库内部进行操作!这样就会造成严重的数据库安全隐患,容易被别人修改数据库的内容从而造成软件的瘫痪!

解决方法:

在没有采取防止SQL注入措施之前的:
sqlhelper类的把“牛腩测试”这个类别的名字添加到数据库中的代码如下:


categoryDAO类:
 

采取防止SQL注入措施后:
修改后的sqlhelper类:


修改后的categoryDAO类:


运行后显示:


由上图我们可以明显看到,如果将相同的【牛腩测试')delete category where id=4--】语句写入界面,它只是增加和文本框相同的内容,而不会删除id为4的内容了!其实它的防止原理在我看来就是采取将add(即一个一个增加参数)换成addrange(即以数组形式添加参数)后将 sqlparameter重载就可以了(可能理解有误,请指教!)

小结:

记得在很早的时候就听说过这个SQL注入,但是在自己做系统的时候总是由于考虑不周,或者研究不到位就给忽略过去了!在这里再次听一下详细的讲解感觉还是很好的,又掌握了一门知识!所以,还是米BOSS的那句话,学不会就先剩下,在后边的学习中一定会补上的!接下来还会遇到触发器、存储过程、CSS等东西,期待牛腩老师以后的讲解!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值