SQL必知必会
陈旸
清华大学计算机博士
立即订阅
10179 人已学习
课程目录
已完结 49 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词丨SQL可能是你掌握的最有用的技能
免费
第一章:SQL语法基础篇 (19讲)
01丨了解SQL:一门半衰期很长的语言
02丨DBMS的前世今生
03丨学会用数据库的方式思考SQL是如何执行的
04丨使用DDL创建数据库&数据表时需要注意什么?
05丨检索数据:你还在SELECT * 么?
06丨数据过滤:SQL数据过滤都有哪些方法?
07丨什么是SQL函数?为什么使用SQL函数可能会带来问题?
08丨什么是SQL的聚集函数,如何利用它们汇总表的数据?
09丨子查询:子查询的种类都有哪些,如何提高子查询的性能?
10丨常用的SQL标准有哪些,在SQL92中是如何使用连接的?
11丨SQL99是如何使用连接的,与SQL92的区别是什么?
12丨视图在SQL中的作用是什么,它是怎样工作的?
13丨什么是存储过程,在实际项目中用得多么?
14丨什么是事务处理,如何使用COMMIT和ROLLBACK进行操作?
15丨初识事务隔离:隔离的级别有哪些,它们都解决了哪些异常问题?
16丨游标:当我们需要逐条处理数据时,该怎么做?
17丨如何使用Python操作MySQL?
18丨SQLAlchemy:如何使用Python ORM框架来操作MySQL?
19丨基础篇总结:如何理解查询优化、通配符以及存储过程?
第二章:SQL性能优化篇 (18讲)
20丨当我们思考数据库调优的时候,都有哪些维度可以选择?
21丨范式设计:数据表的范式有哪些,3NF指的是什么?
22丨反范式设计:3NF有什么不足,为什么有时候需要反范式设计?
23丨索引的概览:用还是不用索引,这是一个问题
24丨索引的原理:我们为什么用B+树来做索引?
25丨Hash索引的底层原理是什么?
26丨索引的使用原则:如何通过索引让SQL查询效率最大化?
27丨从数据页的角度理解B+树查询
28丨从磁盘I/O的角度理解SQL查询的成本
29丨为什么没有理想的索引?
30丨锁:悲观锁和乐观锁是什么?
31丨为什么大部分RDBMS都会支持MVCC?
32丨查询优化器是如何工作的?
33丨如何使用性能分析工具定位SQL执行慢的原因?
34丨答疑篇:关于索引以及缓冲池的一些解惑
35丨数据库主从同步的作用是什么,如何解决数据不一致问题?
36丨数据库没有备份,没有使用Binlog的情况下,如何恢复数据?
37丨SQL注入:你的SQL是如何被注入的?
第三章:认识DBMS (7讲)
38丨如何在Excel中使用SQL语言?
39丨WebSQL:如何在H5中存储一个本地数据库?
40丨SQLite:为什么微信用SQLite存储聊天记录?
41丨初识Redis:Redis为什么会这么快?
42丨如何使用Redis来实现多用户抢票问题
43丨如何使用Redis搭建玩家排行榜?
44丨DBMS篇总结和答疑:用SQLite做词云
第四章:SQL项目实战 (3讲)
45丨数据清洗:如何使用SQL对数据进行清洗?
46丨数据集成:如何对各种数据库进行集成和转换?
47丨如何利用SQL对零售数据进行分析?
结束语 (1讲)
结束语 | 互联网的下半场是数据驱动的时代
SQL必知必会
登录|注册

37丨SQL注入:你的SQL是如何被注入的?

陈旸 2019-09-18
我们之前已经讲解了 SQL 的使用及优化,正常的 SQL 调用可以帮我们从数据库中获取想要的数据,然而我们构建的 Web 应用是个应用程序,本身也可能存在安全漏洞,如果不加以注意,就会出现 Web 安全的隐患,比如通过非正常的方式注入 SQL。
在过去的几年中,我们也能经常看到用户信息被泄露,出现这种情况,很大程度上和 SQL 注入有关。所以了解 SQL 注入的原理以及防范还是非常有必要的。
今天我们就通过一个简单的练习看下 SQL 注入的过程是怎样的,内容主要包括以下几个部分:
SQL 注入的原理。为什么用户可以通过 URL 请求或者提交 Web 表单的方式提交非法 SQL 命令,从而访问数据库?
如何使用 sqli-labs 注入平台进行第一个 SQL 注入实验?
如何使用 SQLmap 完成 SQL 注入检测?

SQL 注入的原理

SQL 注入也叫作 SQL Injection,它指的是将非法的 SQL 命令插入到 URL 或者 Web 表单中进行请求,而这些请求被服务器认为是正常的 SQL 语句从而进行执行。也就是说,如果我们想要进行 SQL 注入,可以将想要执行的 SQL 代码隐藏在输入的信息中,而机器无法识别出来这些内容是用户信息,还是 SQL 代码,在后台处理过程中,这些输入的 SQL 语句会显现出来并执行,从而导致数据泄露,甚至被更改或删除。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《SQL必知必会》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(4)

  • 墨禾

    不规范的代码,比如拼接sql 却没有进行参数化验证,或者在前端验证完参数就以为是安全的输入,这些都很容易被绕过,导致sql注入。

    防注入的方法:
    1 参数化验证。不同的语言都应该封装了这种方法,比如说c#,java的sqlparameter .
    2 对参数进行过滤。严格的白名单进行参数过滤。
    2019-09-19
    1
    5
  • zhxxmu
    在后端程序中采用参数化查询方式进行查询
    2019-11-21
  • 许童童
    涨知识了,谢谢老师的分享。

    作者回复: 加油

    2019-09-18
  • 蒙开强
    老师,你好,目前很少使用get方式提交了,差不多用post,而且输入参数都会校验的
    2019-09-18
    1
收起评论
4
返回
顶部