前言
计算机系统的安全一直是你我所重视的,但或许你一直在替系统安装修正文件,防毒软件,架设防火墙,划定非军事区等等,但可能由于撰写程序代码的疏忽,你的背后正有一个自己营造的大漏洞。
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] ... 下一页 >> [办公软件]在sybase中插入图片、PDF、文本文件 [办公软件]安装Sybase ASE [办公软件]linux指令大全(完整篇) [办公软件]Linux新手入门常用命令大全 [办公软件]在RedHat Linux 9里安装gaim0.80 [办公软件]浅谈Linux 下Java 1.5 汉字方块问题解决方法 [办公软件]Linux程序员必读:中文化与GB18030标准 [办公软件]linux指令大全 [办公软件]制作Linux启动盘的四种方法 [办公软件]Linux文件系统的反删除方法
|