简述什么是SQL注入,写出简单的SQL注入语句

作者&投稿:褚倩 (若有异议请与网页底部的电邮联系)
用最简单的方法讲解什么是SQL注入~

一个数据库一般都包含有若干张表,如同我们前面暴出的数据库中admin表包含有管理员信息,而user表则包含有所有的论坛用户信息一样。以下面这张表为例:
Dv_User
UserID UserName UserPassword UserEmail UserPost
1 admin 469e80d32c0559f8 eway@aspsky.net 0
2 Test 965eb72c92a549dd 1@2.com 0
这是DVBBS 7.0的数据库中所有用户资料的表,Dv_User 是表名。每一行代表一个用户,每一列是该用户的某种属性。我们最感兴趣的自然是用户名与密码这样的属性了。
SQL是一种用于操作数据库的规范化语言,不同的数据库(MSSQL、MYSQL、ORACLE……)大体上都是一样的。比如我们要查询数据库中的信息:
select UserName,UserPassword from Dv_User where UserID=1;
这就是一个最典型的SQL查询语句,它的意思是,在Dv_User这张表中,将UserID为1的用户名与密码查询出来。
得到的结果是:admin 469e80d32c0559f8
SELECT语句语法:
SELECT [列名],[列名2]…… FROM [表名] WHERE [限制条件]
例:
SELECT * FROM Dv_User where UserID=1
表示查询UserID为1的所有信息。
更新:
UPDATE [表名] SET [列名]=新值 WHERE [限制条件]
例:
UPDATE Dv_User set [UserPassword]=’ 965eb72c92a549dd’ WHERE UserName=’admin’
此语句将把Dv_User表中的UserName为admin的那一行中UserPassword的值改为965eb72c92a549dd。
删除:
DELETE FROM [表名] WHERE [限制条件]
例:
DELETE FROM Dv_User WHERE UserName=’test’
将用户名为test的那一行从Dv_User表中删除
二、SQL注射漏洞简述
SQL语法看很容易上手,那SQL漏洞是怎么来的呢?”
if id"" then
sql="SELECT * FROM [日记] WHERE id="&id
rs.Open sql,Conn,1
我们这段代码是提取自BBSXP论坛的,经过我改动以后,把它做成了一个有漏洞的页面给你讲述SQL漏洞的原理。”
那张日记的表内容如下:
日记
id username title content adddate
我们访问 localhost/bbsxp/blog.asp?id=1
的时候结果如图1。
“访问blog.asp的时候,我们提交的参数id为1,那么放到SQL语句里就变成了:
SELECT * FROM [日记] WHERE id=1
所以就得到我们看到的那个页面,这就是sql注入的成因。
1楼2010-07-17 09:52
举报 |
个人企业举报
垃圾信息举报
C级丶娱乐
正式会员
5
SQL漏洞的起源就从这里开始了!注意到了吗?id的值是由我们提交的


一般开发,肯定是在前台有两个输入框,一个用户名,一个密码,会在后台里,读取前台传入的这两个参数,拼成一段SQL,例如: select count(1) from tab where usesr=userinput and pass = passinput,把这段SQL连接数据后,看这个用户名/密码是否存在,如果存在的话,就可以登陆成功了,如果不存在,就报一个登陆失败的错误。对吧。
但是有这样的情况,这段SQL是根据用户输入拼出来,如果用户故意输入可以让后台解析失败的字符串,这就是SQL注入,例如,用户在输入密码的时候,输入 '''' ' or 1=1'', 这样,后台的程序在解析的时候,拼成的SQL语句,可能是这样的: select count(1) from tab where user=userinput and pass='' or 1=1; 看这条语句,可以知道,在解析之后,用户没有输入密码,加了一个恒等的条件 1=1,这样,这段SQL执行的时候,返回的 count值肯定大于1的,如果程序的逻辑没加过多的判断,这样就能够使用用户名 userinput登陆,而不需要密码。
防止SQL注入,首先要对密码输入中的单引号进行过滤,再在后面加其它的逻辑判断,或者不用这样的动态SQL拼。

SQL注入:利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,这是SQL注入的标准释义。


面试的时候,问了一个问题,什么是 防止SQL注入
5、更多的相关的发挥你可以自个去想,有的SQL语句利用“数据库引擎”的能力可以产生相当可怕的后果。产生这种“SQL注入”的可能,是因为设计者没有客户输入后,合成SQL语句时,可能有“SQL注入”进行猜测与预想。另一方面,“SQL注入”的实现往往需要客户对SQL数据库有相当的了解。6、防止SQL注入最基本的...

sql电脑被人入侵怎么办
2、很多不要脸的软件、应用、网站,向使用或来访者给出恐吓性提示,是想让人按它的说法安装垃圾甚至恶意软件,就象大街上的算命先生骗人那样,先吓你。所以,你先搞清楚“提示说电脑正在被黑客使用SQL注入入侵”的到底是个什么玩意儿。3、退一万步来说,有黑客错误的入侵你的电脑了,没有较高的电脑...

SQL注入的一般过程如何?
一旦iis没有关闭错误提示的,那么就可以利用报错方法轻松获得库里面的内容 获得数据库连接用户名:;and user>0 这个是小竹提出来的,我这里引用《SQL注入天书》里面的一段话来讲解: ---"重点在and user>0,我们知道,user是SQLServer的一个内置变量,它的值是当前连接的用户名,类型为nvarchar。拿...

SQL注入攻击的种类和防范手段有哪些?
晕,这不是C#考题吗。SQL注入攻击的种类 知彼知己,方可取胜。首先要清楚SQL注入攻击有哪些种类。1.没有正确过滤转义字符 在用户的输入没有为转义字符过滤时,就会发生这种形式的注入式攻击,它会被传递给一个SQL语句。这样就会导致应用程序的终端用户对数据库上的语句实施操纵。比方说,下面的这行代码...

如何彻底防止SQL注入?
但如果提交and 1=2之后返回了错误页面则说明此站点将后面的语句带入了SQL语句并执行了,也就说明他可以进行SQL注入。(注:如果地址后面跟的是news.asp?id='1'就得变为news.asp?id=1' and '1'='1来补全引号了)那么,知道可以注入后入侵者可以做什么呢?这里就简单的说一下,比如提交这样的...

黑客游戏SQL注入这一关怎么破
百度百科:SQL注入攻击是你需要担心的事情,不管你用什么web编程技术,再说所有的web框架都需要担心这个的。你需要遵循几条非常基本的规则:1)在构造动态SQL语句时,一定要使用类安全(type-safe)的参数加码机制。大多数的数据API,包括ADO和ADO. NET,有这样的支持,允许你指定所提供的参数的确切类型(...

如何能防止sql注入
4. 对用户输入进行验证。检查输入内容是否符合预期的数据类型和长度,拒绝不符合要求的输入,如二进制数据、转义序列和注释字符。5. 使用存储过程验证输入。通过存储过程过滤掉特殊符号,如分号和注释分隔符,这些往往是SQL注入攻击的工具。6. 在多层应用环境中实施多层验证。确保所有用户输入在进入可信区域...

SQL注入问题
通用的asp防注入程序.杜绝SQL注入隐患.提升网站安全 一般的http请求不外乎 get 和 post,所以只要我们在文件中过滤所有post或者get请求中的参数信息中非法字符即可,所以我们实现http 请求信息过滤就可以判断是是否受到sql注入攻击。IIS传递给asp.dll的get请求是是以字符串的形式,当传递给Request.QueryString...

mybatis中的$的sql注入该怎么解决
时,上述 sql 的解析为:select * from user where name = "ruhua";预编译之前的 SQL 语句已经不包含变量 name 了。综上所得, ${ } 的变量的替换阶段是在动态 SQL 解析阶段,而 #{ }的变量的替换是在 DBMS 中。注意:${ } 在预编译之前已经被变量替换了,这会存在 sql 注入问题。

网络安全攻击方法分为
2、注入攻击 开放Web应用安全项目新出炉的十大应用安全风险研究中,注入漏洞被列为网站最高风险因素。SQL注入方法是网络罪犯最常见的注入方法。注入攻击方法直接针对网站和服务器的数据库。执行时,攻击者注入一段能够揭示隐藏数据和用户输入的代码,获得数据修改权限,全面俘获应用。防御方法:保护网站不受注入...

仪陇县19175812313: 简述什么是SQL注入,写出简单的SQL注入语句 -
申鲁肝素: 一般开发,肯定是在前台有两个输入框,一个用户名,一个密码,会在后台里,读取前台传入的这两个参数,拼成一段SQL,例如: select count(1) from tab where usesr=userinput and pass = passinput,把这段SQL连接数据后,看这个用户名/...

仪陇县19175812313: SQL注入是什么意思啊,各位大虾告诉我下哈... -
申鲁肝素: 简单的说sql注入是由于程序员不小心(当然还要加上数据为本身有问题),把用户从页面上的数据直接做为sql语句的一部分提交给数据库,这个时候如果用户使用特别设计的数据就...

仪陇县19175812313: SQL注入是什么意思? -
申鲁肝素: 随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患.用户可以...

仪陇县19175812313: 请您简要描述一下什么事SQL注入?
申鲁肝素: 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.

仪陇县19175812313: 用最简单的方法讲解什么是SQL注入 -
申鲁肝素: 一个数据库一般都包含有若干张表,如同我们前面暴出的数据库中admin表包含有管理员信息,而user表则包含有所有的论坛用户信息一样.以下面这张表为例: Dv_User UserID UserName UserPassword UserEmail UserPost 1 admin 469e80d...

仪陇县19175812313: 介绍一下SQL注入
申鲁肝素: 一、SQL注入简介:1、由于程序在执行SQL数据库操作之前,没有对用户的输入进行验证,导致非法用户捏造的SQL语句也被数据库引擎当做正常SQL语句被执行的现象; 2、非法用户捏造的SQL语句可以获得用户名密码、修改用户名密码、...

仪陇县19175812313: 什么是sql注入? -
申鲁肝素: SQL是Structured Quevy Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的.SQL功能强大、简单易学、...

仪陇县19175812313: 什么叫做SQL注入,如何防止?请举例说明. -
申鲁肝素: sql注入就是,通过语句的连接做一些不是你想要的操作..举个例子你就懂了例如你要查询id=1的记录,直接连接就是这样"select * from tableName where id=1"别人可以写成"select * from tableName where id=1;delete from tableName" 这样就把你的表数据全部删除了.就是加个;继续写脚本,当然,这只是个例子..还能做其他操作,比如获取你数据库的用户名,密码什么的,那就惨了,,传参的方式可以防止注入"select * from tableName where id=@id" 然后给@id赋值,就ok啦..这是我的个人看法,,期待更好的解答

仪陇县19175812313: APP安全之SQL注入之什么是SQL注入 -
申鲁肝素: 简单来说就是在sql语句未结束的地方让他提前结束;比如一个sql select * from table where name='a' and pass='b' a表示一个变量,当a的值为 : admin' and 0=0; 那么sql就会变成 select * from table where name='admin' and 0=0;' and pass='b' 当执行到;的时候就默认结束了 直接查询出name=admin的数据

仪陇县19175812313: 什么是sql注入攻击 -
申鲁肝素: SQL注入攻击是黑客对数据库进行攻击的常用手段之一.随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患.用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网