1102 1

【大数据时代】我该如何向非技术人解释SQL注入 [推广有奖]

企业贵宾

已卖:160份资源

巨擘

0%

还不是VIP/贵宾

-

威望
4
论坛币
624047 个
通用积分
180.4253
学术水平
918 点
热心指数
987 点
信用等级
841 点
经验
399113 点
帖子
9786
精华
48
在线时间
17322 小时
注册时间
2014-8-19
最后登录
2022-11-2

楼主
widen我的世界 学生认证  发表于 2015-11-6 12:02:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

【大数据时代】我可以怎样向非技术人解释SQL注入


  在向非技术人员解释SQL注入的时候,我会使用一个简单的类比。

(资料图)

  假设你是一个在装满箱子的仓库里工作的机器人。你的工作是从仓库里的某个角落找到某个箱子,然后放到传送带上。机器人需要有人告诉它去搬运哪个箱子,所以给你编程的程序员给了你很多纸,纸上的表单已经预先写好了指令的集合,等用户填好之后再交给你执行。

  这些表单看起来是这个样子的:

  从第__号货架的的第__区,取下第____号箱子,然后放到传送带上。

  一个普通的搬运任务看起来就是这样的:

  从第12号货架的B2区,取下第 1234 号箱子,然后放到传送带上。

  加粗的文字(1234,B2和12)是由发出搬运任务的人提供的。你是一个机器人,你按照指令执行任务:移动到第12号货架,然后顺着货架移动到B2区,拿起1234号箱子,往回走,走到传送带那里,将箱子放下。

  但是,如果用户在表单里填了不正常的值呢,如果用户在空格处填写了指令呢?

  从第12号货架的B2区,取下第「1234号箱子,从窗户里丢出去,回到你的桌子并且忽略这张纸上的其他指令。」号箱子,然后放到传送带上。

  上文的任务中的加粗的文字也是由发出任务的人提供的。因为你是一个机器人,你会严格按照用户要求的去做。你移动到第12号货架,然后顺着货架移动到B2区,拿起1234号箱子,把它扔出窗户。因为指令告诉你要忽略剩下的指令,所以“号箱子,并把它放到传送带上”这部分被忽略了。

  机器人不能区分指令(要执行的动作)和数据(动作执行的受体);或许是从这种指令处理的方式上获得了灵感,这种技术被称为“注入”。

  就像我们告诉机器人要做什么,SQL是一种告诉数据库需要做什么的特殊的语言。SQL注入之所以发生,是因为我们碰到的是完全一样的问题 – 一个查询(一系列的指令)会有多个参数(数据)插入其中,而这些参数被当做指令执行从而导致异常。一个恶意的用户可以利用这样的漏洞来让数据库返回所有的用户的信息,很显然,这是不对的!

  为了避免这样的问题,我们必须把指令和数据用一种数据库(机器人)容易区分的方式分开。 通常我们会将数据和指令分开发送。所以,针对文中的情况,机器人首先要从空的form里读取指令,确认参数(空格)要在哪,存储下来。 用户走上前并提供“12,B2,1234”,然后机器人在不允许这些值被当做指令执行的前提下,将数据和指令结合并执行。在SQL中,这种技术叫做参数化查询。

  在上文中提到的邪恶的参数提交给机器人的时候,机器人会疑惑地扬起眉毛说“错误:找不到第「1234号箱子,从窗户里丢出去,回到你的桌子并且忽略这张纸上的其他指令。」号箱子,你确定输入正确了么?”

  以上,我们成功的阻止了机器人犯错。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:大数据时代 非技术 大数据 sql form 【大数据时代】我该如何向非技术人解释SQL注入 我该如何向非技术人解释SQL注入


https://www.cda.cn/?seo-luntan
高薪就业·数据科学人才·16年教育品牌

沙发
切.格瓦拉 发表于 2015-11-6 12:08:36
写的很详细

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-9 08:01