来源
表单输入或者url传参
常见攻击方式
';
和--
SELECT * FROM adv where title='zhangsan';DROP TABLE article--'
引号和分号是为了隔离前面的sql语句,后面的--代表注释。因为最后一个'
可能会影响删表,所以使用注释不影响执行删表。注意:最后一个引号来自代码封装:原语句可能如下的写法:
$sql = "SELECT * FROM adv where title='".$_GET['title']."'";
#这句php代码因为title本身是被引号的
';'
+or
+ --
SELECT * FROM adv where title='zhangsan' or DROP TABLE article--'
注意:在PHP中的 mysql_query() 是不允许执行多个SQL语句的,但是还是可以通过or and 等语句来执行。
预防sql注入
safe_mode = on
;索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。
缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
数据库存储过程是一种数据库应用程序,它使用一组特定的SQL语句来操作数据库中的数据。存储过程可以用来提高数据库的性能,提供可重复使用的功能,以及提高数据库的安全性。
优点:
1.可以提高数据库的性能:存储过程可以提高数据库的性能,因为它可以将一组SQL语句封装为一个单独的过程,而不是每次执行SQL语句时都要重新编译它们。
2.可重复使用:存储过程可以被多次使用,这样可以节省开发时间,减少重复代码。
3.提高安全性:存储过程可以提高数据库的安全性,因为它可以限制用户对数据库的访问,同时也可以防止用户误操作数据库。
数据库视图是一种特殊的虚拟表,它的内容来自一个或多个表,可以把多个表的数据组合在一起,以便简化查询。
游标是一种用于遍历数据集的特殊对象,它可以用来查询特定的行,更新特定的行,或者删除特定的行。它可以用来检索数据库中的数据,并在过程中控制行的处理方式,一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。
视图的优点:
(1) 视图能够简化用户的操作
(2) 视图使用户能以多种角度看待同一数据;
(3) 视图为数据库提供了一定程度的逻辑独立性;
(4) 视图能够对机密数据提供安全保护。
数据库锁是一种机制,用于在多个用户或程序之间共享数据库资源时,保护数据的完整性和一致性。它可以防止多个用户同时修改同一份数据,从而避免数据混乱。
数据库锁可以分为表锁、行锁和页锁:
sql包括:数据定义(DDL)、数据操纵(DML)、数据控制(DCL)、数据查询(DQL)四个部分。
数据定义:Create Table,Alter Table,Drop Table, Craete/Drop Index等
数据操纵:Select ,insert,update,delete,
数据控制:grant,revoke
数据查询:select