科技信息
○IT 技术论坛 ○
SCIENCE & TECHNOLOGY INFORMATION
2008 年
第 27 期
ASP+ACCESS 网站安全问题
廖建锋 ( 河南经贸职业 河南 郑州
450053 )
存取数据库方便、 执行效率高等特点, 在网站开发中 ASP 技 术 得 到 摘 要】 【 ASP 作为一种交互式的动态网页开发技术 , 具有开发周期短、 广泛应用。ACCESS 数据库是 ASP 网站最
常用的数据库, 本文从 ACCESS 数据库方面阐述了 ASP 构建网站存在的主要安全问题 , 并给出了相应 的一些解决方案。 关键词】 ; 安全; 数据库 【 ASP
一、 引言 ASP 全名为 Microsoft Active Server Pages, 是 一 套 微 软 开 发 的 服 务 器 端 脚 本 环 境 , 通 过 ASP 我 们 可 以 结 合 HTML 网 页 、 ASP 指 令 和 交互且高效的 WEB 服务器应用程序。 ActiveX 元件建立动态、 ACCESS 数据库是 ASP 网站 最 常 用 的 数 据 库 , 人 们 在 广 泛 应 用 ASP+ACCESS 技术建立网站的同时, 往往忽视 ACCESS 数据库的安全问题。 二、 ACCES S 数据库的安全问题 ACCESS 数据库最大的安全隐患在于可 以 被 别 人 下 载 , 而 现 在 提 供 的 很 多 ASP 空 间 都 是 只 支 持 ACCESS 数 据 库 , 这 样 一 来 , ASP+ ACCESS 网 站 的 安 全 问 题 就 显 得 更 为 突 出 , ACCESS 数 据 库 安 全 问 题
主要表现在一下几个方面。 1.ACCESS 数据库的存储隐患 在 ASP+ACCESS 网 站 中 , 如 果 获 得 或 者 猜 到 ACCESS 数 据 库 的 存储路径和数据库名, 则该数据库就可以被下载到本地。 2.Access 数据库的解密隐患 由于 Access 数据库的加密机制非 常 简 单 , 所 以 即 使 数 据 库 设 置 了密码, 解密也很容易。该数据库系统通过将用户输入的密码与某一 固定密钥进行异或来形成一个加密串 , 并 将 其 存 储 在 * .mdb 文 件 中 开始的区域内。由于异或操作的特点是“ 经过两次异或 从地址“ &H42 ” 就 恢 复 原 值 ” 因 此 , 用 这 一 密 钥 与 * .mdb 文 件 中 的 加 密 串 进 行 第 二 , 次异或操作, 就可以轻松地得到 ACCESS 数据库的密码。基于这种原 由此可见, 无论是否设置了数据库 理, 可以很容易地编制出解密程序。 密码, 只要数据库被下载, 其信息就没有任何安全性可言了。 3. 程序设计中的安全隐患 ASP 代
码利用表单( form) 实现与用 户 交 互 的 功 能 , 而 相 应 的 内 容 会反映在浏 览 器 的 地 址 栏 中 , 如 果 不 采 用 适 当 的 安 全 措 施 , 只 要 记 下 这些内容, 就可以绕过验证直接进入某一页面。例如在浏览器中敲入 “ …… page.ASP?x=1 ” 即 可 不 经 过 表 单 页 面 直 接 进 入 满 足 “ ” 件 , x=1 条 的页面。 因此, 在设计验证或注册页面时, 必须采取特殊措施来避免此 类问题的发生。
户的信息保留下来, 让后续的网页读取。 4. 修改数据库扩展名 也可以将数据库的扩展名改为 .asp , 当然在定位数据库的时候也 要用类似 database.asp 的文件名, 这样数据库不会被轻易的下载, 而数 据还可以正常的读出写入。 5. 注意 ASP
程序设计中的安全
问题 对于大多数人来讲, 认为网站只要加了登录密码就无法正常进入 了。而请您看下面的验证语句:
sql="select uname,pwd from uinfo where " sql=sql&"uname=' "&request.form("uname")&"' " sql=sql&" and pwd=' "&request.form("pwd")&"' " rs.open sql,conn,1,1 if rs.eof or rs.bof then response.write " 对不起, 错误的用户名 / 密码! " else response.write " 登录成功! " end if
这段代码是十分危险的, 只要对方知道用户名就可以登录, 你可 就 以在密码框里输入“ or ' 1' =' 1 ” 可 以 了 , 其 原 理 很 简 单 , 就 是 利 用 了 '
sql 查 询 语 句 , 大 家 注 意 , 用 此 方 法 提 交 以 后 的 sql 语 句 变 成 了 : (如 果 用 户 名 为 administrator)select uname,pwd from uinfo where uname = ' administrator' and pwd=' ' or ' 1' =' 1' , 如果用户名 administrator 存在的 话那么这个记录是可以被选出来的, 之后当然就是可以正常登录了。 解决方案:
三、 Acces s 数据库的安全问题解决
方案 由