- 浏览: 220562 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (132)
- 企业开发 (46)
- SSO (5)
- CAS (1)
- SOAP (8)
- Oracle (5)
- Eclipse IDE (3)
- 事业 (14)
- Lucene (4)
- 课间十分钟 (2)
- maven (1)
- CMS (5)
- 设计模式 (0)
- 软件开发流程 (0)
- midas/GTS (1)
- Java Hibernate (1)
- SqlServer2005 (1)
- Jquery (1)
- Java (1)
- Java Maven Pom (1)
- Java Velocity (1)
- Jira 项目管理 (2)
- 软件开发 需求分析 (1)
- 单点登录 (1)
- 项目管理 (1)
- 时间管理 (1)
- UI 交互设计流程 (1)
- SVN (1)
- css w3c (1)
- ASP.NET FrameWork (1)
- Oracle Session Process (1)
- tomcat (1)
- Web (0)
最新评论
-
fendou3754:
程序可以运行,不过对于中文的搜索,貌似要将txt文件存为UTF ...
Lucene开发实例--代码篇 -
ewf_momo:
...
Lucene开发实例--代码篇 -
dbh0512:
我的是一段文本 每次只能创建一个索引 但是搜索不到 求解答
Lucene开发实例--代码篇 -
a496649849:
终于安装了 多谢
m2安装Eclipse3.6.1(eclipse-jee-helios-SR1-win32.zip)问题 -
lyj57:
那个"E:\\renwg\\茶余饭后\\新建文件夹& ...
Lucene开发实例--代码篇
SQL注入 是一种代码注入 技术,它利用一个安全漏洞 的发生在数据库 层的应用 。 该漏洞存在当用户输入错误地过滤,要么是字符串 转义字符 在嵌入式的SQL 语句或用户输入不强类型 ,从而意外地执行。 它是一类更一般的漏洞可能出现的每当一个编程或脚本语言嵌入在另一个实例。 SQL注入攻击也被称为SQL注入攻击。
不正确的转义字符过滤
这对SQL注入的形式出现时,用户输入不过滤, 转义字符 ,然后被传递到一个的SQL 语句。 在关于由应用程序的最终用户数据库进行操作的语句可能这样的结果。
下面的代码行说明这个漏洞:
statement = "SELECT * FROM users WHERE name = '" + userName + "';"
此SQL代码的目的是拉动其用户从表中指定用户名的记录。 . 但是,如果“用户名”变量是在一个特定的方式制作一个恶意用户,SQL语句可能做多的代码作者的意图。 例如,设置了“ 用户名 ”变量
' or '1'='1
或使用注释,甚至阻止其他查询:
' or '1'='1';/*'
使这一由家长语言SQL语句:
SELECT * FROM users WHERE name = '' OR '1'='1';
如果此代码是要在一个认证过程中使用那么这个例子可以用来强制一个有效的用户名的选择,因为'1'= '1'的评价永远是正确的。该语句下面的值的“用户名”在下面将导致表删除“用户”,以及userinfo的表选择“所有数据从”(在本质上揭示了每个用户信息),使用的API 的允许多条语句:
a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't
这种投入呈现最终的SQL语句如下:
SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't';
虽然大多数的SQL服务器实现允许将多个语句执行的方式与这一个来电,API,例如一些SQL 的PHP
的mysql_query()
不允许因为安全的原因。
这可以防止攻击者注入完全独立的查询,但并不能阻止修改查询它们。
======================================================
错误类型的处理
这种形式的SQL注入时,会出现用户提供的字段不强类型的 ,或不检查类型 的限制。 这可能发生在一个数字字段是在SQL语句中使用,但程序员不作任何检查,以验证用户提供的输入是数字。 例如:
statement := "SELECT * FROM userinfo WHERE id = " + a_variable + ";"
正是从这一声明清楚,作者的意图a_variable是数字,关联到的“ID”字段。 但是,如果它其实是一个字符串 ,那么最终用户 可以操纵的发言,因为他们选择,从而绕过需要的字符转义。 例如,要设置a_variable
1;DROP TABLE users
将下 drop (delete)从数据库中的“用户”表,因为SQL将呈现如下:
SELECT * FROM userinfo WHERE id=1;DROP TABLE users;
==============================
在数据库服务器中的漏洞
有时,漏洞可以存在于数据库服务器软件本身,因为是与案件的MySQL
服务器的mysql_real_escape_string()
函数[2] 。
.
这将允许攻击者执行SQL注入攻击成功的Unicode字符的坏,即使用户的输入被逃脱。
这个问题已经打上了版本5.0.22发布(05月06日24日发布)。
盲SQL注入
盲SQL注入是一个Web应用程序时使用很容易受到SQL注入,但注入的结果是不可见的攻击者。 与此漏洞的网页可能是一个不显示数据,但会显示不同的逻辑语句进入合法的SQL语句注入的页面调用的结果而定。 这种类型的攻击可以成为时间密集,因为一个新的语句必须为每个位制作的恢复。 有几个工具,可以自动建立这些攻击一旦该位置的漏洞和目标信息。
有条件的回应
一个盲目的SQL注入式强制数据库,以评估对一个普通的应用程序屏幕上的一个逻辑语句。
SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=1;
会导致正常的页面,而
SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=2;
可能会给出不同的结果如果页面很容易受到SQL注入。 这就像一个注入攻击者可能会建议一个盲目SQL注入是可能的,攻击者留下的语句,制定评估为真或假表列或不同的内容之外的另一个SELECT语句的列列表。
=================================
有条件的错误
这种盲目的SQL注入式的原因,迫使数据库,以评估一份声明中导致错误,如果WHERE语句为真一个SQL错误。 例如,
SELECT 1/0 FROM users WHERE username='Ralph';
由零司将只进行评估,并导致错误,如果用户“Ralph”存在。
时间延迟
时滞是一种盲目的SQL注入类型,导致SQL引擎执行一个长时间运行的查询或延时语句的逻辑依赖注入。 攻击者就可以测量时间的页面需要加载,以确定是否注入的说法是正确的。
=============
防止SQL注入
为了防止SQL注入,用户输入不能直接嵌入SQL语句。 相反,必须使用参数化语句(首选)或用户输入必须仔细逃跑或过滤。
参数化语句
对于大多数开发平台,采用参数化语句可以带参数的工作,而不是嵌入在语句的用户输入(有时称为占位符或绑定变量)。 . 在许多情况下,SQL语句是固定的,每个参数是一个标量,而不是一个表。 用户输入,然后分配(方向)的参数。 这是一个使用Java和JDBC的 API的:
PreparedStatement prep = conn.prepareStatement("SELECT * FROM USERS WHERE USERNAME=? AND PASSWORD=?"); prep.setString(1, username); prep.setString(2, password); prep.executeQuery();
发表评论
文章已被作者锁定,不允许评论。
-
Velocity浅析及与Jsp、Freemarker对比
2011-08-21 18:10 886Velocity 是一个基于java ... -
Google首页电吉他Doodle源代码
2011-06-10 12:22 996为了纪念电吉他之父莱斯·保罗(Les Paul,1915 ... -
Caused by: javax.imageio.IIOException: Can't create cache file!
2011-05-23 20:17 3640验证码 无法显示问题。 错误日志为: Cause ... -
配置Resin 3+iis 支持JSP且共享80端口
2011-05-20 17:21 2333软件环境 操作系统:win2003 SDK:JDK 1.6 服 ... -
大型网站架构不得不考虑的10个问题
2011-05-17 21:28 910这里的大型网站架构 ... -
This class does not support SAAJ 1.1, weblogic?
2011-05-15 19:21 2044项目 将要迁移到 Weblogic 10.3. ... -
javax.xml.ws.soap.SOAPFaultException: This class does not support SAAJ 1.1
2011-05-15 18:24 2012]] Root cause of ServletExcepti ... -
Date 与 Calendar 计算时间及天数
2011-03-09 21:19 1618有时我们会比较时间,例如:7天前,7天后。 虽然 ... -
m2安装Eclipse3.6.1(eclipse-jee-helios-SR1-win32.zip)问题
2011-02-25 15:36 23281. m2eclipse------------------- ... -
Eclipse is running in a JRE, but a JDK is required 解决方法
2011-02-25 11:54 1569装Maven后每次启动出现警告信息: Eclipse is ... -
Apache Tomcat Tomcat5 服务因 0 (0x0) 服务性错误而停止”问题的解决
2011-02-17 20:38 1515今天又找到一个解决方法,应该比较通用。就是删除服务再重新安装。 ... -
随机产生26个英文字母
2010-12-28 16:45 1862char paramChar = (char)(Math ... -
Java字符串反转问题
2010-12-28 14:18 936java反转:可以使用 StringBuffer中的 r ... -
Java解析XML文件的四种方法
2010-12-14 21:15 6841.介绍 1)DOM(JAXP Crimson ... -
java 调用.net DLL的方法
2010-12-14 20:44 984背景: 近日一个java的项目,客户要求项目中必须使用其提 ... -
提供Java性能的十一个用法
2010-12-14 15:44 842Java语言习惯用语 1。循环 ■ 在重要的循环里,消除循 ... -
Java中的DOS下常用命令积累
2010-12-13 18:33 10361:解压jar包: xf org.eclipse.swt.w ... -
优化C盘
2010-12-08 16:44 917主要讲讲Windows操作系 ... -
Win XP使用100%网速的方法
2010-12-08 16:17 1043开始菜单里点击”运行”,输入gpedit. ... -
现实生活即将被虚拟化
2010-12-08 14:20 1140往往好的创 ...
相关推荐
- 首先,报告简要介绍了SQL注入问题的重要性,以及为何需要对其深入理解和防范。 2. **SQL注入原理与方法**: - SQL注入的基础在于应用程序未能正确过滤用户输入,导致恶意SQL代码能够被执行。 - **手动检测SQL...
SQL注入是一种常见的网络安全漏洞,它发生在应用程序在构建数据库查询时,未正确过滤或验证用户输入,使得攻击者可以通过构造特定的SQL语句来控制或获取数据库中的敏感信息。本话题聚焦于一个名为“超级好用”的SQL...
首先,让我们简要回顾一下SQL注入攻击的基本原理。SQL注入,全称为Structured Query Language注入,是一种代码注入技术,攻击者通过在Web表单输入或页面请求的查询字符串中插入恶意的SQL代码片段,来实现对数据库的...
sql注入
首先,本文简要介绍了当前Web应用程序的安全风险,特别是SQL注入漏洞的严重性。随着Web2.0时代的到来,大量基于B/S架构的应用程序在各个企业的业务系统中得到了广泛的应用。在应用开发过程中,如果开发者缺乏相应的...
SQL注入漏洞是网络安全领域中的一个重要话题,它涉及到数据库管理和Web应用程序的安全性。在这个"SQL注入漏洞演示源代码"中,我们可以深入理解这种攻击方式的工作原理,并学习如何防止它。 SQL注入是通过在输入数据...
最后,文章简要叙述了文章的组织结构,包括引言、相关研究工作、提出的SQL注入检测算法原理、算法实现、算法测试与评价,以及总结和展望。 总结来说,这篇文章详细地讲解了SQL注入攻击的危害、检测和预防的原理,...
SQL注入的原理可以简要说明如下:攻击者在Web应用系统中输入恶意构造的SQL语句片段,当这些输入被后端数据库执行时,就能够绕过正常的查询逻辑,执行攻击者设计的恶意查询或命令。例如,一个登录功能的表单,本意是...
文章的最后部分还简要介绍了OS/2、POSIX、LSA等术语,这些术语虽与主题关联不大,但有助于读者了解SQL注入攻击发生的技术环境,增强对整体网络安全的认识。 总的来说,文章通过对SQL注入原理的剖析,对医院网站的...
Web服务器脚本攻击事件的增多反映出各种Web服务器漏洞的非...文章简要介绍了SQL注入攻击的概念和原理,以及SQL注入攻击的特点和实现过程,并在此基础上叙述了如何检测SQL注入攻击,总结了一般的SQL注入攻击的防范方法。
SQL注入是一种常见的网络安全漏洞,它发生在应用程序未能正确过滤或验证用户输入的数据时,允许攻击者插入恶意的SQL语句到应用程序的查询中。本文将通过一个简单的示例来解释SQL注入的工作原理和演示如何利用它。 ...
SQL注入(SQL Injection)是一种常见的网络攻击方法,攻击者通过在Web应用的SQL命令中插入恶意SQL代码片段,利用应用程序中的安全漏洞,从而实现对数据库的非法访问和操作。这种攻击的危害极大,可以获取敏感数据、...
在使用SQL Server这样的数据库管理系统时,数据加密技术和防止SQL注入是确保数据安全的两个关键方面。本文将对SQL Server的数据加密方法进行简要介绍,并深入探讨SQL Server注入法及其预防措施。 首先,我们来了解...
本文主要探讨了在SQL注入攻击中如何进行文件的读写操作。SQL注入是一种常见的网络安全攻击技术,攻击者通过向数据库注入恶意SQL代码,从而控制数据库服务器。在这一过程中,攻击者不仅能够读取数据库中的数据,还能...
本文主要介绍如何在存在SQL注入漏洞的环境中利用特定技术执行操作系统级别的命令。这种技术通常被安全研究人员用于渗透测试场景,帮助评估网络环境的安全性。文章首先简要介绍了传统方法——即使用`xp_cmdshell`扩展...
- 遵循安全编码原则,使用参数化查询避免SQL注入攻击。 - 使用连接池提高性能,减少频繁打开和关闭连接的开销。 - 对于长运行的数据库操作,使用异步方法以避免阻塞UI线程。 - 适当地使用事务确保数据一致性,尤其是...