当前位置: 首页 > 面试题库 >

来自“ Bobby Tables” XKCD漫画的SQL注入如何工作?

吕鸿朗
2023-03-14
问题内容

此SQL的作用是:

Robert’); DROP TABLE STUDENTS; –
我知道这两个’和–是征求意见,但不字DROP得到的评论,以及因为它是在同一行的一部分吗?


问题答案:

学校程序中的原始代码可能看起来像

q = "INSERT INTO Students VALUES ('" + FNMName.Text + "', '" + LName.Text + "')";

如您所见,这是将文本输入添加到查询中的简单方法,并且非常糟糕。

在将名字,中间名称文本框FNMName.Text(即Robert'); DROP TABLE STUDENTS; –)和姓氏文本框LName.Text(即称为Derper)的值与查询的其余部分连接在一起之后,结果实际上是两个查询,中间用语句终止符(分号)。第二个查询已注入到第一个查询中。当代码对数据库执行此查询时,它将看起来像这样

INSERT INTO Students VALUES ('Robert'); DROP TABLE Students; --', 'Derper')

用简单的英语粗略地翻译成两个查询:

向“学生”表中html" target="_blank">添加一个名称为“ Robert”的新记录

删除学生表

第二个查询之后的所有内容都标记为注释: –‘, ‘Derper’)

将’在学生的名字是不是一个评论,它的关闭字符串分隔符。由于学生的名字是一个字符串,因此在语法上需要它来完成假设的查询。注入式攻击仅在其将有效查询SQL注入结果的SQL查询时起作用。



 类似资料:
  • 一款手机阅读漫画应用,其中有下载、分享、收藏等功能。 [Code4App.com]

  • 在线漫画阅读App,下载并显示漫画。 作者说:自己本打算做个漫画赚点广告费,结果赚了个冰棍钱,最终决定分享给大家了吧,源码 接口数据(数百万数据开放),大家也可以用我开放的后台接口开发新的客户端,随意,哈哈。 [Code4App.com]

  • 问题内容: 我正在学习RoR /数据库,这个话题特别让我感到困惑。在《 用Rails开发敏捷4 》一书中,他们给出了一个示例,该示例查找名为Dave的条目的所有订单的列表: 这本书接着说,您永远都不想做这样的事情: 相反,您应该这样做: 我了解什么是SQL注入概念,但是有一些细节使我感到困惑。对于初学者来说,SQL注入作为一种语法到底是如何工作的。 我得到的危险是,如果像第一个示例那样插入外部表单

  • 本文向大家介绍什么是sql注入?如何避免sql注入?相关面试题,主要包含被问及什么是sql注入?如何避免sql注入?时的应答技巧和注意事项,需要的朋友参考一下 用户根据系统的程序构造非法的参数从而导致程序执行不是程序员期望的恶意SQL语句。使用参数化的SQL就可以避免SQL注入。 详细参考复习ppt。举例子,摆事实! 1' or 1=1

  • 问题内容: 这个问题已经在这里有了答案 : 9年前关闭。 可能重复: 什么是SQL注入? 我看到很多php代码在stackoverflow上四处飘荡,字符串的转义太少了。 谁能 说明什么是SQL注入; 说明它可以对您的服务器,数据和代码执行的操作; 举例说明如何执行SQL注入 给php示例代码如何防止SQL注入 问题答案: 我也无法抗拒。 SQL注入是“一种代码注入技术,可利用应用程序数据库层中发

  • 看漫画,学 Redux。不写一行代码,轻松看懂 Redux 原理! Flux 架构已然让人觉得有些迷惑,而比 Flux 更让人摸不着头脑的是 Flux 与 Redux 的区别。Redux 是一个基于 Flux 思想的新架构方式,本文将探讨它们的区别。 如果你还没有看过这篇关于 Flux 的文章(译者注:也可以参考这篇),你应该先阅读一下。 为什么要改变 Flux? Redux 解决的问题和 Flu