CGI安全性解析
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
% ! 基本的安全问题
编写安全的 < 如果 ] 那即使再仔 8 :脚本的第一步要确定是否安全并正确的配置了 ] A U 服务器 ) A U 服务器并不可靠 # 脚本也是没有用的 # 入侵者仍然可以闯入计 算 机 而 且 # 正 确 的 配 置 服 务 器 能 够 减 小 糟 糕 的 细编写 < 8 : ) ] A U < 8 :程 序 所 带来的可能的危害 ) %) %! 保护 ] A U 服务器 在不同的平台有数不清的 ] 检查所有的 服 务 器 组 件 并 确 定 你 是 否 真 的 需 要 所 有 组 件 的 特 性 ) 越 A U 服务器可供使用 ) 功能越强大的服务器 # 越有可能存在未被发现的安全问题 ) 确定是否服务器支持日志功能 # 这样可以跟踪安全问题 或 复杂 % 其它故障的原因 )有一个对付意外事件的计划 ) 如果发现安全漏洞 #要随时准备升级或者替换对应的 ] 关注新 A U 服务器 ) 版本的发行和新闻组中相关 ] 服务器的信息 尽量使用 服 务 器 最 新 的 非 测 试 的 版 本 在 增 强 服 务 器 的 安 全 性 时# A U ) ] A U ) 应该做到配置程序使它只能提供指定的服务 # 并且不到必要的时候不暴露任何信息 ) 8 :程序 %) !! 放置 < 很多服务器允许通过各种不同途径来运行 < 例如 # 可以指定一 个 特 定 的 目 录 作 为 B 或者允许 < 8 :程序 ) H $U H E ) 8 :存 F 这两种方法都有优缺点 # 但是从安全 的 角 度 来 说 # 在一个指定的目录中放置所有的 < 放在任何目录下 ) 8 :应 用 程 序 更 好 ) 把所有的程序放到同一个目录便于跟踪服务器所有的应用程序并审查它们的安全漏洞 ) 同时 # 还可以防止被恶意修改 ) 注意到在服务器中指定一个中心目录作为 < 特别是在多用户系统中) 例如# 如果一个 8 :程序的存放位置是有限定的 # ! " 想让其用户可以编写并运行自己的 < 则可能有意允许 < : 6 e : E I A S E A I6 A S V H B Ae S @ V H R A S 8 :程序 # 8 :程 序 可 以 存 放 在 任 何 的 目录中 ) 做这个之前 # 应认真考虑一下可替换的选项 ) 其用户打算写很多的特定的个性化的脚本吗?如果不是 # 最好是 让 用 户将他自已的 < 然后由 : 而不要允许 < 8 :脚本提交给 : 6 e# 6 e 将其添加到 B H $U H E 目录中 # 8 :在任何目录中有效 ) F 关于 < 另外一个问题是将解释器放在 哪 里 ) 解 释 脚 本 时# 服 务 器 运 行 解 释 器# 由它顺序装载脚本并执 8 :程序的位置 # 不要将解释器放到 B 目录中 # 或其他相关数据结构的任何目录中 若给了用户访问解释器的权限 # 本质上 就 是 给 行) H $U H E ) F 了用户运行服务器的系统中任何程序或命令的权力 )
商丘职业技术学院学报 ! " " # 年第 ’ 期 ; @ %) (# 3 @ ) ’ ! !! ! 第 (卷! 总第 % # > A B ) -期" / 012 3. 40 56 7.389 : 1 ;0 < . = : 03. 4 .3 >= ? <73 : < . 4< 0 4 4 ? 8 ? ! " " #
" !引!言
通用网关接口 ! " # 简称 < 简单地说# < @ QQ @ E8 J I A X J E I A S L J B A 8 :是 ] A U服务器对外提供信息服务的一个标准接口) O: 就是在 7=C4 文本与 服 务 器 主 机 上 的 应 用 程 序 之 间 的 接 口 ) 在 使 用 超 文 本 7=C4 文 件 构 建 ] 可以结合其他 A U站点时# 然后经 < 也可以将用户输入的数据记 录 到 服 务 器 主 机 上 的 数 据 库 中 ) 在构建 外部的程序 # 8 :应用程序处理后传给客户机 # 尤其是将 < 可以实现强大的功能 # 正是因为 < ] A U 服务器时 # < 8 :用得非常频繁 # 8 :程序与/ J V J 6 B S H I结合起来 # 8 :程序在 K ’ %( 只要 < 就使入侵者能访问计算机 # 造成难以预料的后果 ) 6 A V A S端的强大的处理能力 # 8 :脚本中有一点安全方面的失误 #
( !) 些特殊的数据 ! 不能假设用户都按照正常的思路和要求使用表单 )
!) !) %! 两种导致问题的方式 大部分 < 负责处理由用户输入的信息并提供某种定制 的 输 出 ) 它们期望用 8 : 脚本是作为 7=C4 表单的后台运行的 ! 户的输入能匹配收集并发送信息的表单 ) 不过事情并不总是这样 ) 当用户登录进入 ] 用户 A U 站点并开始进行交互访问 时 ! 可以有许多种办法绕过这些预定义的格式而给脚本发送一些看起来是随机的数据 ) < 8 : 程序必须对此有所准备 ) 其次 ! 用户可以给 < 按预期的形式在表单中填入每个字 段 ) 但凭借他的有关操作系统 8 : 脚本发送所期望的数据类型 ! 和 ]? 服务器的漏洞知识 ! 来入侵系统 Z ) !) !) !! 访问验证与来源验证 经常会导致未经授权访问 ! 修改甚至删 除 访问验证错误主要是因为用于验证的条件不足以确定用户的身份而造成的 ! 没有访问权限的内容 ) 用于确定用户身份的方法一般有两种 ! 一是 帐 号 和 密 码 ! 一是 6 而不安全的认证方法包 A P P H @ E认证) 括M 也 就 是 拒 绝 服 务 攻 击! 如灌水 P A S H R 认证 ! < @ @ Y H A认证等等 )比较常见的利用来源验证错误 进 行 攻 击 的 方 法 就 是 > @ 6! 机! 就是利用 < 从而不间断的发文章 ! 最后导致服务器硬盘充满而挂起 ) 8 :程序没有对文章的来源进行验证 ! !) !) (! 拒绝不合要求的表单数据 首先! 不仅限制 < 8 :脚本可以有几种方式拒绝接收提交给它的非预期的 输 入 ) < 8 :脚 本 应 设 置 接 收 多 少 数 据 的 限 制! 整个提交 ! 也限制提交中的每个 3.C? , 例如! 检查 < ;. 4 1 ? 对) < 8 :脚 本 读 取 e 0 6 = C? =70 >! 03 = ? 3 =$4 ? 38 =7 环境变量的大小来确定某输入是不是合理的预期输入 ) 如果 < 那么如果 < 8 : 脚本设计接收的唯一数据是某人的姓名 ! 03 c 就应该有理由返回一个错误 ) 没 有 哪 个 合 理 的 姓 有 那 么 长! 通 过 设 置 限 制! 就能使脚本 = ? 3 =$4 ? 38 =7 大于 % " " 字节 ! 不再盲目地读取发送给它的内容 ) 下一步 ! 确定在接收到不能识别的数据时如何处理 ) 例如 ! 如果某表单要求用户选择两 个 单选按钮之一 ! 脚本就不应该假设因为一个按钮未被选择 ! 另一 个 就 一 定 被 选 择 了 ) 脚本应该不对接收的表单数据进行假 设! 应尽可能预计意料之外的情形并正确地处理不合理的或错误的输入数据 )
! 8 :程序 ! 写出安全的 <
!) %! 脚本和程序
! " " #$" ($! % !! 收稿日期 ! 作者简介 ! 曹亚君 ! # 女# 河南商丘人 # 商丘职业技术学院助理讲师 ) % & * ’$ "
)# ’ )万方数据
在开始决定采用何种语言编写 < 其中之一应是安全性 ) 8 :脚本时应考虑几个因素 ! 6 D A G G脚本 ! e A S G程序和 < 可执行程 序是 < 从安全性角度来说每种都各有优缺 ) 尽管没有哪一 种 是 最 好 的 $ $ 基 于 其 他 方 面 的 考 虑 ! 8 :脚本最常采用的形式 ! 如速度和可重用性 $$ 每种都有实用的领域 ) 快速的甚至只执行一遍的 < 因此! 编 写 它 们 时 常 常 不 考 虑 安 全 性) 若其中存在的安 6 D A G G脚本一般用于小的 " 8 :程序 ! 全性缺陷暴露后 ! 攻击者很容量改动并控制系统 ) 并且 < 8 :程序会继承任何它使用的程序的 安 全 问 题 ) e A S G用 于 < 8 :编 程 并且相当安全 ) 但e 这意味着它实际在调用时是先编 译 ! 然后每次执行一步) 这就很容易使得 有很多优点 ! A S G是解释型的 ) 不正确的用户数据被包括进来作为代码的一部分 ! 从而错误 地 进 行 解 释 ! 形成程序中止原因) <基本上已经成为标准应用 开发语言 ) 从安全性的角度来似乎问题较 少 ! 但它的几种安全性问题已广为人知! 而 这 些 问 题 也 很 容 易 被 人 利 用) 例如 < 会出现被称为 U 缓冲区溢出 $ 的问题 ) M L L A S@ V A S L G @ X# 程序 %)在 < 语言中使用数组定义字符串 ) E B G M R A AP I R H @ ) D@ (H E B G M R A AP I S H E ) D@ (H F !X ! & A L H E AQ A P P J A% 7 A G G @ @ S G R (R F #$ H E IQ J H E ’!B ( ) * D J SU M L L A S + " # ! $ * I S B U M L L A S Q A P P J A !P K O F # % & ! $ * iP E U M L L A S S H E I L !K = A I M S E"*+ !S 程序 !)在 < 语言中使用指针定义字符串 ) E B G M R A AP I R H @ ) D (H @ E B G M R A AP I S H E ) D (H @ F !X ! & A L H E AQ A P P J A% 7 A G G @ @ S G R (R F #$ H E IQ J H E ’!B $/ # D J S /U M L L A Sa Q J G G @ B# P H N A @ L# B D J S P I S G A E # $ $ $ * Q A P P J A f % F # ! $ * I S B U M L L A S Q A P P J A !P K O F # % & ! $ * S H E I L iP E U M L L A S !K = *+ A I M S E" !S
eiasljba简称au服务器对外提供信息服务的一个标准接口简单地说就是在7c4文本与服务器主机上的应用程序之间的接口在使用超文本7c4文件构建au站点时可以结合其他外部的程序然后经在构建au服务器时程序与jvj6bshki结合起来可以实现强大的功能正是因为程序在6avas端的强大的处理能力只要基本的安全问题编写安全的脚本的第一步要确定是否安全并正确的配置了au服务器如果au服务器并不可靠那即使再仔细编写而且正确的配置au服务器能够减小糟糕的程序所带来的可能的危害保护au服务器在不同的平台有数不清的au服务器可供使用确定是否服务器支持日志功能这样可以跟踪安全问题或其它故障的原因如果发现安全漏洞要随时准备升级或者替换对应的au服务器关注新版本的发行和新闻组中相关au服务器的信息尽量使用au服务器最新的非测试的版本在增强服务器的安全性时应该做到配置程序使它只能提供指定的服务并且不到必要的时候不暴露任何信息程序很多服务器允许通过各种不同途径来运行例如可以指定一个特定的目录作为bfhuhe或者允许例如如果一个
而且在这个特定的例子里 ! 两者都可以很好的工作 ) 若已经知道了处理的字符串的长 度 ! 则 !! 程序 % 比程序 ! 简单得多 ! 但 是! 在< 有 时 并 不 知 道 输 入 的 字 符 串 会 有 多 长) 如上例中信息的长度大于 可以定义一个适当的数组长度 ) 8 :程 序 里 ! ! 那么程序 % 会崩溃 # 即通常说的 % 溢出 & $ 这就是 U 它会 成 为 未 经 授 权 的 用 户 进 入 的 后 门 ) 程序 + " B D J S ) M L L A S@ V A S L G @ X 漏洞 ! 首先 ! 它动态的分配了存储字符串的足够的空间 ) 其次 ! 因信息的长度加了 %! 实际上分 配 了 ! 中的代码则解决了两个问题 ) 这就保证字符串不会是 ") 因为目标字符总是会为额外的字符留 有 空 间 ! # $ 函数在目 比字符串长度多 % 字节的内存 ) P I S B K O 标字符串的最后添加了空字符 ! # $ 放置了空字符 没有理由认为传送给 脚本的 字 符 串 会 是 空 字 符 ! 因 此 ! 为了以 P I S B ) < 8 : K O 防万一 ! 在最后留了 % 字节的空间 ) !) !!< 8 :的恶意输入 几乎所有的 < 接收来自外部数据源的输入之 后 ! 恶 8 : 安全问题都来自与用户的交互 ) < 8 :程 序 就 可 能 由 于 各 种 特 殊 # 意$ 输入而执 行 到 编 程 者 预 先 未 考 虑 到 的 地 方 ) 正是与用户的这种交互$$$通过表单或文件路径$$$才给予了 < 8 : 脚本这种能力 ! 但同时也使得它们成了 运 行 在 ] 服 务 器 上 的 最 潜 在 的 危 险 部 分 编 写 安 全 的 ! 必 须 有 足 够 的 想 象 A U ) < 8 : 力! 考虑到用户可能采取的不管是无意地还是别的所有的可能隐含导致问题的发送数据的方式 ! 以及他们会输入什么样 一
文章编号 ! " # % ’ * %$+ % ! * ! " " # " ’$" " # ’$" (
< 8 :安全性解析
曹亚君
! 商丘职业技术学院 #河南 商丘 # " * ’ " " " 摘!要! 计算机领域 $ $ $ 尤其在 : 尽管大部分 ] E I A S E A I上 # A U 服务器 所 编 的 程 序 都 尽 可 能 保 护 自 己 的 内 容 不受侵害 # 但只要 < $ $ 口令文件 % 私有数据% 以及任何东西# 就能使入侵者访 8 :脚本中有一点安全方面的失误 $ 遵循一些简单的规则并保持警惕能使自己的 < 从而可以保护自己的权益 ) 问计算机 ) 8 :脚本免受侵害 # 关键词 ! & < 8 : 7=C4& ] A U 服务器 中图分类号 ! = e ( " &) !!!!!!! 文献标识码 ! .