SQL注入、触发器、存储结构那些事儿~-

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a954553391/article/details/85405676

前言:机房重构的时候,就用过存储过程,但是对于SQL注入和触发器不是很清楚。在敲牛腩的时候,对于这些内容又进行了深一步的理解,于是总结了一下这三个方面的内容,下面和大家来分享一下。

(一)SQL注入

1.是什么

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

例如:插入新语句的同时,进行删除旧语句
Insert into category (name) values(‘娱乐新闻’)delete category where id=1–)

具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.

2.特点:

根据构造的语句,进行修改,安全性差

3.如何避免SQL注入

做系统的时候应该避免SQL注入,可以采用【设置输入限制】、【web设置只读权限】、【输入验证】等方式来避免SQL注入。

(二)触发器(trigger)

1.是什么

①触发器是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行【不是由程序调用】,也【不是手工启动】,而【是由事件来触发】。

例如:当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。

②SQL的触发器是一个能由系统自动执行对数据库修改的语句。

触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。

例如:根据客户当前的帐户状态,控制是否允许插入新订单。

③触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。

2.特点:

①轻松可靠地实现许多复杂的功能。
②如果应用不好,可能会影响数据库结构,数据库维护起来困难。

(三)存储过程(Stored Procedure)

1.是什么

存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

2.特点:

每个参数名前要有一个"@"符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE外,其他SQL Server所支持的数据类型都可使用。

3.和触发器的区别

触发器是一种特殊类型的存储过程。

触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。

例如:对某一表进行诸如Update、 Insert、 Delete 这些操作时,SQL Server 就会自动执行触发器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的规则

总结:知识的学习是在点滴积累中收获的,多学习,多总结~

猜你喜欢

转载自blog.csdn.net/a954553391/article/details/85405676
今日推荐