Atitit sql注入的防范
目录
2.3. 限制数据查询语句类型,只能dql select 2
2.6. Update 条件 一点要有具体id并且是自己的数据,只限一条 2
2.7. update 和 delete 不提供批量更新和删除, 2
3.4. 只允许读取自己的数据检查,所以数据必须要有userid后端隐藏提供 3
3.8. 多条件必须拆分开,方便参数检查参数绑定,防止注入操作 3
4.1. 没有翻页参数的可以拒绝 或者强制少量数据默认1000 4
5. 数据库操作语句类型(DQL、DML、DDL、DCL) 4
白名单
database()等
过滤select into 语句禁止 ,select merger等会影响数据结果的禁止。。
特殊符号’ -- #等符号检查
这样方便检查内容。。Or and not 等操作拆分,不要字符串模式容易混淆
Insert 适当放开
Delete 一点要有具体id并且是自己的数据,只限一条
Where 条件值允许and
隐藏式userid
只能根据 objectId(where objectId=xxx)和其他条件来更新或者删除某个文档
防止查询info_schema 元数据库等
数据库操作语句类型(DQL、DML、DDL、DCL)简介
SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。
数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE
子句组成的查询块:
SELECT <字段名表>
FROM <表或视图名>
WHERE <查询条件>
数据操纵语言DML主要有三种形式:
1) 插入:INSERT
2) 更新:UPDATE
3) 删除:DELETE
数据定义语言DDL用来创建数据库中的各种对象-----表、视图、
索引、同义词、聚簇等如:
CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
表 | 视图 | 索引 | 同义词 | 簇
说明:DDL操作是隐性提交的!不能rollback
数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制
数据库操纵事务发生的时间及效果,对数据库实行监视等。如:
1) GRANT:授权。
2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。
回滚---ROLLBACK
回滚命令使数据库状态回到上次最后提交的状态。其格式为:
SQL>ROLLBACK;
EG:
-- 执行表数据闪回(回滚)申明
ALTER TABLE FCPARDATA ENABLE ROW MOVEMENT;
-- 正式数据回滚
FLASHBACK TABLE FCPARDATA TO TIMESTAMP TO_TIMESTAMP('2019-06-19 08:40:00','YYYY-MM-DD HH24:MI:SS');
3) COMMIT [WORK]:提交。
在数据库的插入、删除和修改操作时,只有当事务在提交到数据库时才算完成。在事务提交前,只有操作数据库的这个人才能有权看到所做的事情,别人只有在最后提交完成后才可以看到。提交数据有三种类型:显式提交、隐式提交及自动提交。下面分别说明这三种类型。
(1) 显式提交
用COMMIT命令直接完成的提交为显式提交。其格式为:
SQL>COMMIT;
(2) 隐式提交
用SQL命令间接完成的提交为隐式提交。这些命令是:
ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,
EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。
(3) 自动提交
若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后,
系统将自动进行提交,这就是自动提交。其格式为:
SQL>SET AUTOCOMMIT ON;
1、数据查询语言(DQL:Data Query Language):其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其它类型的SQL语句一起使用。 [4]
2、数据操作语言(DML:Data Manipulation Language):其语句包括动词INSERT、UPDATE和DELETE。它们分别用于添加、修改和删除。 [4]
3、事务控制语言(TCL):它的语句能确保被DML语句影响的表的所有行及时得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。
4、数据控制语言(DCL):它的语句通过GRANT或REVOKE实现权限控制,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。 [4]
5、数据定义语言(DDL):其语句包括动词CREATE,ALTER和DROP。在数据库中创建新表或修改、删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。 [4]
6、指针控制语言(CCL):它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。 [4]
SQL注入——入门篇 - 姑苏城外的江枫_博客 - CSDN博客.html