一、漏洞描述
针对SQL注入的攻击行为可描述为通过在用户可控参数中注入SQL语法,破坏原有SQL结构,达到编写程序时意料之外结果的攻击行为。
二、攻击场景及形成原因
漏洞成因可以归结为以下两个原因叠加造成的:
1. 程序编写者在处理应用程序和数据库交互时,使用字符串拼接的方式构造SQL语句。
2. 未对用户可控参数进行足够的过滤便将参数内容拼接进入到SQL语句中。
SQL注入的攻击方式根据应用程序处理数据库返回内容的不同,可以分为可显注入、报错注入和盲注
报错和回显注入显而易见,盲注有时容易被忽略:
在页面无返回的情况下,攻击者也可以通过例如延时等技术来实现发现和利用注入漏洞:select 1 from te where if((MID(version ......
1、修改root用户口令,删除空口令
缺省安装的MySQL的root用户是空密码的,为了安全起见,必须修改为强密码,所谓的强密码,至少8位,由字母、数字和符号组成的不规律密码。使用MySQL自带的命令mysaladmin修改root密码,同时也可以登陆数据库,修改数据库mysql下的user表的字段内容,修改方法如下所示:
/usr/local/mysql/bin/mysqladmin -u root password “upassword” //使用mysqladmin
mysql> use mysql;
mysql> update user set password=password('upassword') where user='root';
mysql ......
### 游标的特性
1.不敏感:数据库可以选择不复制结果集
2.只读
3.不滚动:游标只能向一方向前进,并且不可以跳过任何一行数据
### 游标的优点
1.游标是针对行操作的,对从数据库中 select 查询得到的结果集的 每一行可以
2.进行分开的独立的相同或者不相同的操作,是一种分离的思想。
### 游标的缺点
1.性能不高
2.只能一行一行操作
3.使用游标会产生死锁,造成内存开销大
### 游标的适用场景
存储过程
函数
触发器
事件
### 游标的操作
##### 1、游标的定义
DECLARE 光标名称 CURSOR FOR 查询语法
declare cursor_name cu ......
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id from t where num=0
3.应尽量避免在 where 子句中使用!=或<>操作符,否则引擎将放弃使用索引而进行全表扫描。
4.应尽量避免在 where 子句中使用or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t wher ......