SQL数据库的高级sql注入的一些知识

这篇文章讨论常用的sql注入技术的细节,应用于流行的Ms IIS/ASP/SQL-Server平台。这里探讨有关这种攻击各种可以注入程序访问数据和数据库防范的方法。

[概 要]
这篇文章讨论常用的”sql注入”技术的细节,应用于流行的Ms IIS/ASP/SQL-Server平台。这里探讨有关这种攻击各种可以注入程序访问数据和数据库防范的方法。这篇文章面向两种读者:一是基于数据库web程序开发人员和审核各种web程序的安全专家。
[介 绍]
结构化查询语言(SQL)是一种用来和数据库交互的文本语言SQL语言多种多样,大多的方言版本都共同宽松地遵循SQL-92标准(最新的ANSI标准[译者注:目前最新的是SQL-99])。SQL运行的典型的操作是“查询”,它是可以让数据库返回“查询结果记录集”的语句集合。SQL语句可以修改数据库的结构(用数据定义语言”DDL”)和操作数据库里的数据(用数据操作语言”DML”)。我们在这里着重讨论Transact-SQL(交互式SQL),应用于SQL-Server的SQL一种方言(非标准SQL)。如果攻击者可以插一系列的SQL语句进入应用程序的数据查询时,Sql注入攻击就可能发生。
一个典型的SQL语句是这样的:
select id, forename, surname from authors
这个查询语句将会从’authors’表中返回’id’,’forename’和’surname’列的所有行。返回的结果集也可以加以特定条件’author’限制:
select id, forename, surname from authors where forename = ‘john’ and surname = ‘smith’
注意这里很重要的一点是’john’和’smith’是被单引号引住的,假设’forename’和’surname’字段是来自于用户的输入,攻击者就可能通过输入非法字符串来对这个查询进行SQL注入:
Forename:jo’hn
Surname: smith
查询语句就会变成:
select id, forename, surname from authors where forename = ‘jo’hn’ and surname = ‘smith’
当数据库试图执行这个查询,它会返回这样的错误:
Server:Msg 170, Level 15, State 1, Line 1
Line 1:Incorrect syntax near ‘hn’
这是因为插入的单引号破坏了原来单引号引住的数据,数据库执行到’hn’时失败。如果攻击者这样输入:
Forename: jo’; drop table authors–
Surname:
…authors表就会被删掉,原因过一会再解释。
似乎通过删除用户输入的字符串中的单引号或者通过一些方法避免它们出现可以解决这个问题。诚然如此,但是要实施这个解决方法还有很多的困难。因为首先:不是所有的用户提交的数据都是字符串形式,比如我们的用户输入通过’id'(看上去是个数字)来选择一个用户,我们的查询可能会这样:
select id,forename,surname from authors where id=1234
在这种情况下攻击者可以轻易的在数值输入后面添加SQL语句。在其他SQL方言中,使用着各种分隔符,比如MS Jet DBMS引擎,日期可以用’#’符号来分隔。
其次,避免单引号并不像开始我们想象的那样是必要的解决办法,原因下面讨论。
我们将以Active Server Pages(ASP)登陆页面为例子来详细说明,它访问一个Sql-Server数据库并且验证一个到我们假想的程序的访问。
这是用户填写用户名和密码的表单页面:
代码如下:

Login Page

Login

这是’process_login.asp’的代码, 它处理用户登陆:
代码如下:


p { font-size=20pt ! important}
font { font-size=20pt ! important}
h1 { font-size=64pt ! important}

function trace( str )
{
if( Request.form(“debug”) == “true” )
Response.write( str );
}
function Login( cn )
{
var username;
var password;
username = Request.form(“username”);
password = Request.form(“password”);
var rso = Server.CreateObject(“ADODB.Recordset”);
var sql = “select * from users where username = ‘” + username + “‘
and password = ‘” + password + “‘”;
trace( “query: ” + sql );
rso.open( sql, cn );
if (rso.EOF)
{
rso.close();
%>

ACCESS DENIED

Response.end
return;
}
else
{
Session(“username”) = “” + rso(“username”);
%>

ACCESS GRANTED

Welcome,
Response.write( “

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1696486.html

(0)
上一篇 2025年2月19日 13:42:22
下一篇 2025年2月19日 13:42:37

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 防止Java SQL注入攻击的技巧

    java是一种广泛用于开发企业级应用程序的编程语言。然而,随着网络安全威胁的不断出现,保护应用程序免受恶意攻击成为了开发人员的重要任务之一。其中,防止sql注入攻击是开发过程中最关键的安全性问题之一。本文将介绍一些防止sql注入攻击的技巧,…

    编程技术 2025年2月23日
    100
  • PHP避免SQL注入的方法是什么?

    如何处理php的sql注入问题? 近年来,随着互联网的迅猛发展,网站和应用程序的数量不断增加,其中一种常见的开发语言是PHP。然而,PHP的使用也引发了一些安全问题,其中之一就是SQL注入。SQL注入攻击是指黑客通过构造恶意的SQL语句来获…

    编程技术 2025年2月23日
    100
  • PHP安全编程指南:防御命令注入和SQL注入

    php安全编程指南:防止命令注入与sql注入漏洞 在现代互联网应用开发中,安全问题一直被视为至关重要的因素之一。而在PHP开发中,命令注入(Command Injection)和SQL注入(SQL Injection)漏洞是最为常见的安全漏…

    编程技术 2025年2月23日
    100
  • PHP安全编程指南:防LDAP和SQL注入攻击

    php安全编程指南:防止ldap注入与sql注入攻击 导言:随着互联网的快速发展,Web应用程序的安全问题也日益凸显。其中,LDAP注入与SQL注入攻击是最为常见且危害性较大的两种攻击方式。本文将从原理、示例和防范措施三个方面,为PHP开发…

    编程技术 2025年2月23日
    100
  • 防止SQL注入攻击的PHP编程技巧

    防止sql注入攻击的php编程技巧 简介:SQL注入是一种常见的Web应用程序攻击方式,攻击者通过在用户输入的数据中插入恶意SQL代码,从而获得对数据库的非法访问或执行恶意操作的权限。为了保护我们的应用程序免受SQL注入攻击,我们需要采取一…

    编程技术 2025年2月22日
    100
  • PHP和CGI的防止SQL注入攻击技巧及措施

    php和cgi的防止sql注入攻击技巧及措施 随着网络技术的发展,Web应用程序在我们的生活中扮演越来越重要的角色。然而,随之而来的网络安全问题也愈发突出。其中,SQL注入攻击是最常见和具有破坏性的一种攻击手段。本文将探讨PHP和CGI中防…

    编程技术 2025年2月22日
    100
  • 使用PHP函数 "mysqli_real_escape_string" 转义字符串中的特殊字符,以避免SQL注入

    使用php函数 “mysqli_real_escape_string” 转义字符串中的特殊字符,以避免sql注入 简介:在进行与数据库交互的网站开发过程中,我们常常需要将用户输入的数据存储到数据库中。然而,如果未对用…

    编程技术 2025年2月22日
    100
  • PHP安全编码技巧:如何使用filter_input函数防止SQL注入攻击

    php安全编码技巧:如何使用filter_input函数防止sql注入攻击 简介:在Web应用程序开发中,安全性一直是一个重要的关注点。特别是在处理用户输入时,必须采取措施来防止SQL注入攻击。本文将介绍如何使用PHP的filter_inp…

    编程技术 2025年2月22日
    100
  • PHP表单过滤:SQL注入防范与过滤

    PHP表单过滤:SQL注入防范与过滤 引言: 随着互联网的快速发展,Web应用程序的开发变得越来越普遍。在Web开发中,表单是最常见的用户交互方式之一。然而,表单提交数据的处理过程中存在着安全风险。其中,最常见的风险之一就是SQL注入攻击。…

    2025年2月22日
    100
  • 黑客常用的PHP漏洞利用技术

    黑客常用的PHP漏洞利用技术 随着互联网的普及和发展,网络安全问题也成为了一个全球性的难题。而黑客作为网络安全的”敌人”,其手法也是不断创新和进化的。而在黑客攻击中,基于PHP的网站往往成为主要目标之一。PHP是一种…

    2025年2月22日
    100

发表回复

登录后才能评论