打印本文 打印本文 关闭窗口 关闭窗口
SQLSERVER2000一些内置存储过程用法和说明
作者:武汉SEO闵涛  文章来源:敏韬网  点击数11350  更新时间:2007/11/14 12:27:07  文章录入:mintao  责任编辑:mintao

前言

计算机系统的安全一直是你我所重视的,但或许你一直在替系统安装修正文件,防毒软件,架设防火墙,划定非军事区等等,但可能由于撰写程序代码的疏忽,你的背后正有一个自己营造的大漏洞。

SQL Injection 骇客的 SQL填空游戏

在现今的应用程序架构中,大部分都含有数据库,以容纳各式各样的资料。而在各类型的数据库中,又以结构化查询语言(SQL Structure Query Language)为基础的关系型数据库管理系统(RDBMS Relational Database Management System)最为流行。

一般的程序设计师在存取数据库时,往往是利用 Visual Basic等第三代语言来组织 SQL 语言,然后再传递给关系型数据库系统执行,以建立或删除数据结构,赋予或移除使用权限,乃至于新增、修改、删除或查询资料。因为关系型数据库所有的执行动作皆是遵循 SQL 命令,所以透过此种方式可以很方便地完成各种资料维护工作。但也正因为 SQL 语言无所不能,所以稍有漏洞就会让骇客有机可乘。这两期文章就针对这个主题做一个深入的探讨。

网站的资料存取一般来说是比较危险的,因为网际网络是一个开放的环境,而不像一般公司内部网络,除了有计算机本身的安全设计,还可以过滤筛检员工的身分背景。网际网络上龙蛇杂处,大部分的使用者都循规导矩,但少数图谋不轨的人却处心积虑地要侵入我们的系统,窃取有价值的资料。但一般的网管人员及网页设计师,可能在安全设定上有着重重防范,如架设防火墙,设计非军事区(DMZ),限制网站登入者的身分等等。但由于缺乏对 SQL 语言及数据库管理系统的认知,而大开系统的后门。

本文针对微软的 ASP 网站架构搭配 MS SQL Server 做一个探讨及示范,希望能提供各网站的管理人员对 SQL Injection 的入侵方式有个基本的认识,就笔者在撰写本文时,利用搜寻网站随意找几个有会员机制的网站来测试,其中多数都有被此类方式侵入的危险,大家不可不慎。
笔者在此先建立一个一般会员网站登入网页的范例,以及相关资料表的架构如下:
资料表的 Schema 程序代码列表 1

CREATE TABLE [tblUser] (
     [UserID] [int] IDENTITY (1, 1) NOT NULL ,
     [UserName] [nvarchar] (50) NOT NULL ,
     [Password] [nvarchar] (50) NOT NULL ,
     [Pri] [tinyint] NULL CONSTRAINT [DF_tblUser_Pri] DEFAULT (0),
     CONSTRAINT [PK_tblUser] PRIMARY KEY CLUSTERED
     ([UserID])
)

程序代码列表 1:存放会员资料的资料表 Schema

并在资料表加入两笔资料内容

INSERT tblUser(UserName,Password,Pri) VALUES(''''Admin'''',''''AdminPass'''',10)
INSERT tblUser(UserName,Password,Pri) VALUES(''''Byron'''',''''ByronPass'''',10)

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ...  下一页 >> 

打印本文 打印本文 关闭窗口 关闭窗口