开放源代码软件media wiki成熟度评估
DESCRIPTION
开放源代码软件MediaWiKi成熟度评估TRANSCRIPT
开放源代码软件 MediaWiKi 成熟度评估
作者: 陈越
开放源代码软件成熟度评估
目录
目录 ............................................................................................................................................................................. 2 概述 ............................................................................................................................................................................. 3 开源软件成熟度评估案例 ........................................................................................................................................ 3
MediaWiKi 软件成熟度评估报告 .................................................................................................................... 3 MediaWiKi 数据库软件介绍 .................................................................................................................... 3 MediaWiKi 软件代码质量评测 ................................................................................................................ 7 软件测试 .................................................................................................................................................. 10 MediaWiKi 易用性研究 ........................................................................................................................... 11
软件成熟度评估 .............................................................................................................................................. 11 软件成熟度属性定义与量化 .................................................................................................................. 11 成熟度评估 .............................................................................................................................................. 13 MediaWiKi 软件成熟度评估结论 .......................................................................................................... 16
第 2页 共 20页
开放源代码软件成熟度评估
概述
21世纪的计算机世界是丰富多彩的,不仅计算机硬件性能有了质的飞跃,计算机软件
在功能性、复杂度上都是以前无法比拟的。尤其是互联网及网络应用的出现,极大的丰富了
人们的计算机应用,拓展了应用的领域,将应用水平提高到一个崭新的水平。对于复杂应用,
如何来保障应用软件的质量,如何评估那些纷繁复杂的应用系统呢。人们进行了多方面的探
索,形成了众多软件成熟度评价模型。中国也为此颁布了软件质量国家标准 GB-T8566--
2001G,从而指导软件开发者和使用者正确的评价一个软件的质量及其应用的成熟度。那么,
对于开源世界,我们如何看待,又如何正确评价一个软件的成熟度状况呢。
我们知道,软件成熟度评估的最终目标是帮助软件的可持续发展,并为用户应用提供
必要的技术参考。开放源代码软件成熟度评估也不例外。我们通过软件的成熟度评估,形成
全面的涉及技术、应用、法律等层面的评价报告,帮助那些正在或潜在的开源软件使用者准
确的了解软件的技术特性和应用特性,从而为他们选择适合自身需求的开源软件提供参考。
同时报告中涉及的大量评测数据,为开源软件的开发者提供帮助,促进他们有效的改善软
件在技术方面和使用方面的质量,使软件不断成熟和可持续的发展。
开放源代码软件由于开发模式和运作模式的独特性,其软件带有鲜明的特点。开放源码
软件成熟度评估的方法需要我们在实践中不断的探索。我们将提出一些基本的原则和方法,
并建立我们自己的评估体系和计算模型。
开源软件成熟度评估案例
根据以上描述,我们初步制定了一个适合于开放源代码软件成熟度评估的评价体系和
实施方法。接下来我们将通过两个案例说明我们的评价体系是如何工作的。我们选取
MediaWiKi数据库软件进行评估。从这些软件的案例评估当中可以看到,我们的评估体系会
对不同类别的软件做针对性判别,从而得出基于该类软件的可比较的评估结果。
技术架构分析和代码评测是开源软件成熟度评估中最重要、也是区别于传统商业软件评
估最有特色的部分。我们将做重点说明。
MediaWiKi软件成熟度评估报告
MediaWiKi 数据库软件介绍
第 3页 共20页
开放源代码软件成熟度评估
MediaWiKi
软件名称 MediaWiKi主页 http://www.mediaWiKi.org/WiKi/MediaWiKi社区 http://www.mediaWiKi.org/WiKi/Talk:MediaWiKi支持公司 维基媒体基金会公司简介 维基媒体基金会( WiKimedia Foundation Inc.),简称维基媒体
(WiKimedia),是负责维基百科、维基词典、维基语录、维基教科书、维基
文库、维基物种、维基新闻、维基共享资源、 In Memoriam 9/11 和
Nupedia(已停止)计划的非盈利组织,在美国佛罗里达州注册。
成熟度 B评价 一套基于网络的 WiKi引擎,维基媒体基金会的所有项目乃至众多 WiKi
网站皆采用了这一软件。MediaWiKi 软件最初是为自由内容百科全书维
基百科所开发,今日已被一些公司机构部署为内部的知识管理和内容管
理系统。Novell甚而还在多个高流量的网站中使用了该软件。
软件简介
基本介绍
MediaWiKi采用 PHP编程语言写成,并可使用 MySQL 或 PostgreSQL之一作为其关系数
据库管理系统。MediaWiKi 在 GNU 通用公共许可证第 2版及其后续版本的条款下分发,其文
档则按知识共享-署名-相同方式共享 3.0版协议发布,部分文档还发布于公有领域,这使其
成为了自由开源的软件。
MediaWiKi 具有很丰富的功能,并被维基百科及其他维基媒体基金会的计划所采用,亦
为世界上很多不同的维基所采用。 MediaWiKi采用 PHP语言写成,并以 MySQL 作为其资料
库。它的徽标图像化了它如何运用标记语言即双括号 ("","") 来连结不同的文章。MediaWiKi
具有很高的相容性和可塑性,现在的版本支持 memcached 及 Squid cache 系统,亦支持 TeX数学公式。其扩展系统允许用户自行添加他们需要的特性及定制化程序界面。
MediaWiKi 是一个运行在服务器端的自由软件,基于 GNU General Public License(GPL
协议)发行。它能够平稳地运行在日访问量上百万的网站服务器集群中。MediaWiKi 是一个强
大、可扩展、功能丰富的维基套件,它使用 PHP 技术来访问和显示存储在 MySQL 数据库中的
数据。
使用 MediaWiKi 的维基文本格式,用户不必懂得 XHTML 或是 CSS 也可以很容易的编辑
内容。
当用户对页面进行编辑之后,MediaWiKi 将它写入数据库,但是不会删除这个页面的先
前版本,这使得页面遭到故意破坏或垃圾信息干扰时可以快速恢复。MediaWiKi 也可以管理
第 4页 共20页
开放源代码软件成熟度评估
图像和多媒体文件,这些文件存储在文件系统中。对于拥有大量用户的大型维基网站,
MediaWiKi支持缓存并且可以很容易的外加 Squid 代理服务器软件。
历史
在科隆大学的学生及开发者马格努斯 ·曼斯克(Magnus Manske)设计的用户界面基础
上,李·丹尼尔·克罗克(Lee Daniel Crocker)为维基百科编写了现在的这一软件。维基百科最
初曾经使用 Perl语言编写的小型 WiKi引擎 UseModWiKi 作为后台,其后则换用了 Manske 用
PHP编写的软件来提供更多的功能。随着使用量的日益增长,页面加载的问题日益严重,这
促使克罗克重写了该软件,采用了扩展性更强的 MySQL后台数据库。后来,维基媒体基金
会的首席技术官布里昂·维伯(Brion Vibber)成为了该软件的发布经理及其最活跃的开发者。
随着曼斯克程序第一版的发布,该软件曾被赋予了多项昵称,以表示当时的开发状态——
“PHP脚本”(the PHP script)、“第二期”(phase II)、“第三期”(phase III)、“新代码
库”(the new codebase)——但并无正式的产品名称。2003年 6月 20日,随着维基媒体基
金会的宣布成立,作为对“WiKimedia”(维基媒体)的戏称,维基百科贡献者丹尼尔·迈耶
(Daniel Mayer)创造了“MediaWiKi”一词来称呼这一软件,并在 2003年 8月开始逐步得到
采用。由于这一名称有意地相似于“WiKimedia” 一名(而“WiKimedia”还相似于
“WiKipedia”),因而经常造成混淆。该软件的标志由埃里克·默勒(Erik Möller)基于弗洛
朗丝·尼巴尔-德伍阿尔拍摄的太阳花照片制作,最初用于参加维基百科在 2003年年中举行
的国际性标志竞赛。该标志被评为第三名,并被选作 MediaWiKi 的标志;第二名的标志则被
选为维基媒体基金会的标志。太阳花两侧的双重方括号象征着MediaWiKi 用来创建超链接到
其他 WiKi 页面的语法。
架构
功能特性
第 5页 共 20页
开放源代码软件成熟度评估
基本功能
编辑功能:具有容易书写(并且功能齐全)的格式规则,具备所见即所得功能,可以分章
节编辑,能够方便地参阅以前的版本,并且具有上传文本,插入图像,和书写科学公式的
能力。
阅览功能:包含目录,检索,导航条,访问统计,文章评分,高品位打印输出等功能。
用户管理:包含个人页面,工具条的个人定义,个人偏好的设置等功能。
群件功能:包含论坛,图库,信息传递系统等功能。
访问控制:这对必须考虑安全因素的企业内部网络来说很重要。
格式转换:文件导入(HTML、DOC)和文件导出(DOC、PDF)。
个人界面:可设置个人的主页,顶边栏,底边栏,侧边栏;还有模板。
多国语言:多国语言的支持。
可扩展性:具有什么样的第三方插件,什么样的机构使你制作的插件得以运行。
可移植性:支持多种平台。
可延拓性:当页面变得数量庞大时,此 WiKi引擎是否可行。大多数可扩展的 WiKi引擎都用
一个后端数据库来存储页面。
系统特色
1、记录所有的改动版本,能方便的查阅历史更新记录,这使得开放性编辑成为可能
2、自动产生链接,编辑文本中中括号中的内容(如“[[X条目]]”)将自动产生链接
3、允许使用模板,方便对相同内容的重复使用、更新
4、支持分类,并根据分类在不同的文章之间自动产生关联
5、允许每个用户自行选择系统外观
6、中文支持好,但是中文名附件会有乱码问题
技术特性
1 、 经受过重量级应用的考验,功能丰富却架设简单
2、 全世界最大的 WiKi项目维基百科是使用 MediaWiKi 的成功范例,数据量、访问量都超级庞
大
3 、 MediaWiKi 的功能非常丰富,支持多语言版本,充分满足知识站点的需要
4 、运行环境要求很低,架设过程简洁,即使新手也可以迅速建立自己的站点
5、MediaWiKi 是目前应用最广的 WiKi程序,数以万计的网站在使用它,很容易找到范例站点
6、有大量的热心参与人员参与研究,资料多,容易找到互相交流的朋友
7、 持续开发,程序特性功能不断完善,保证未来的支持
运行环境
操作系统及应用环境:
任何一种可以运行 PHP5 与 MySQL 的操作系统:
Microsoft Windows,例如: Windows 2000、Windows Server 2003、Windows Server 2008
Linux(例如,Fedora……)
BSD(例如,FreeBSD……)
数据库:MySQL 或 PostgreSQL
动态网页技术:PHP5
第 6页 共 20页
开放源代码软件成熟度评估
网页服务器:Apache 或 IIS
MediaWiKi 软件代码质量评测
评测工具介绍
市场上有多种软件质量分析软件,但大多数都价格昂贵,并且一般分析软件的性能很
难支持大规模的代码量。我们与智诚创新科技有限公司合作,通过该公司提供的 Klocwork
静态分析软件对 MediaWiKi进行系统的代码分析,按级别整理分析结果,找出代码缺陷和
安全漏洞,提高MediaWiKi的软件质量。
RATS(Rough Auditing Tool for Security)是一个开源的静态代码分析工具,它由
Secure Software 公司开发和维护,Secure Software 公司已被 Fortify软件公司收购
(Fortify软件公司现已被 HP公司收购)。RATS可对 C,C++,Perl,PHP,Python等语言
的源代码进行静态分析,可标注出编程中经常出现的安全性错误,例如:缓存溢出,
TOCTOU (Time Of Check, Time Of Use) race conditions等。
RATS扫描工具提供了一个安全分析模块,这个模块含有一个列表,此列表存储的是可
能出现的安全问题以及处理建议。RATS还对每个安全问题的潜在危险程度进行评估,为评
估人员提供参考。RATS还提供一些基本的分析以消除一些伪错误。
正如 RATS这个软件的名称所示,该工具只是对源代码进行一个粗略的分析,它不能找
到所有的错误同时也不能保证找到的错误都是真正的错误,所以人工的手动审查是必须的,
可以将该工具视为有力的辅助工具。
该软件的主要功能有:
软件缺陷检测
提供多角度的各种缺陷类型分析。自动化的缺陷检测功能易于使用,定制灵活,具有图
形化的构建和报表管理图形界面,拥有先进的消息过虑器,强大的学习调整知识库 。
Klocwork能够分析 C/C++和 Java代码,生成代码问题报告。
安全漏洞检测
软件安全性时软件质量中一个重要的、并越来越收到重视的方面。Klocwork安全漏洞分
析基于其先进的软件缺陷分析能力,分离出单独的安全漏洞和违反推荐的安全代码的缺陷
程序。
软件架构分析
通过架构分析能够使设计人员及开发人员重新认识他们对该软件的架构理解,并结合
代码分析进行功能强大的影响分析,帮助开发人员找出软件的架构可能会对高质量代码的
开发有何种影响。
软件度量分析
第 7页 共20页
开放源代码软件成熟度评估
搜集统计软件的代码信息,比如,文件数,代码行数,代码复杂度,继承或循环数量
等。帮助开发者和维护着宏观上掌握程序开发的复杂度,便于有针对性的进行代码管理。
可定制的代码分析
许多组织有自己独特的编码标准、安全策略和质量目标。可利用 klocwork为一些特殊问
题的分析进行单独定制,用户也可以编制自己的扩展检查器来完成特定任务。
开发人员IDE集成
klocwork可以和现在大多是主流的 IDE开发环境集成,在开发的早期及时发现可能的代码
漏洞从而有效降低开发成本。
代码评测报告摘要:
Summary:Project name: MediaWiKi
Build name: build_1
Created on: Oct 31, 2007
Files analyzed: 531
Lines of code (Source LOC): 124,534
Defects Overview
Defects Overview:Number of defects 192
Defect Density: 1.54
Header File Problems Overview: Number of defects 1,648
Defect Density: 3.23
Security Vulnerabilities Overview:Number of defects 47
Defect Density: .38
Dependent Headers Overview:Number of dependent header files: 142
Unnecessary Compile Expansion Overview:Unnecessary compile expansion: 539,192
第 8页 共 20页
开放源代码软件成熟度评估
Compile expansion before include optimization: 4,393,144
Compile expansion after include optimization: 3,853,952
System Complexity Overview:Complexity (function average): 8.58
Complexity (per file peak averaged across system): 32.57
Number of highly complex functions: 362
Number of files with highly complex functions: 103
Project configuration details:Creation date: Oct 31, 2007
Creation time: 1:55:39 PM
Software Intelligence Engine version: 7.7.2.3
Number of filter files used: 0
Project name: MediaWiKi
Build name: build_1
Total lines of code (Source LOC): 124,534
Total lines of comments (in c/c++ files): 37,739
Total number of files analyzed: 531
Total number of defects: 1,887
Total number of entities: 24,674
Total number of relationships:
Total number of functions / methods: 3,695
Total number of classes / types: 1,520
Error Distribution
第 9页 共20页
开放源代码软件成熟度评估
Warning Distribution
评测分析
通过对MediaWiKi模块的分析,我们得出评测结论。代码的整体风格统一,格式工整,
总体质量较好。程序结构复杂度合理,出现较多的问题主要是代码中潜在的对 NULL对象的
引用。注释方面,注释丰富,每个程序文件有基本说明,某些重要的代码有详细解释,给社
区参与创造了较好的代码环境。
软件测试
MediaWiKi项目有专门的 Quality Assurance组织,并且存在专门的商业公司负责软件
的商业支持与问题反馈。在网站有专门的用户报告错误或参与测试的页面,错误的报告也可
通过Mail Lis进行。项目提供了一个批处理自动测试环境和一些工具供测试者使用,可以
方便的对软件的主要模块进行自动仿真测试。
第 10页 共 20页
Type # %Null pointer may be dereferenced 4 2.08Result of function that may return NULL will be dereferenced
164 85.42
Suspicious dereference of pointer in function call before NULL check
2 1.04
Memory Leak - possible 2 1.04Pointer may be dereferenced after it was positively checked for NULL
2 1.04
Null pointer may be passed to function that may dereference it
1 0.52
Null pointer will be dereferenced 2 1.04Result of function that can return NULL may be dereferenced
12 6.25
Suspicious dereference of pointer beforeNULL check
2 1.04
Type # %Inconsistent Case Labels 1 0.52
开放源代码软件成熟度评估
MediaWiKi 易用性研究
MediaWiKi无图形配置、使用、监控环境。软件的主要配置和管理靠修改配置文件进行,
不过,软件提供了一些功能丰富的命令行工具,这也是服务器软件的一般做法。软件的部署
和配置非常灵活,缺点是缺乏好的监控工具。
软件成熟度评估
软件成熟度属性定义与量化
ID Class Name Weight01 技术架构设计 402 代码质量 403 软件易用性 104 软件可用性 405 项目建设与管理 206 项目的活跃程度 407 项目测试情况 208 软件应用支持 409 软件法律问题 1
以下为各属性类的属性定义:
ID Class Name Entry Weight Value Memo01 技术架构设计 合理性 4 402 技术架构设计 可扩展性 3 503 技术架构设计 可移植性 2 4040506
ID Class Name Entry Weight Value Memo01 代码质量 代码错误率 4 402 代码质量 代码可读性 4 503 代码质量 代码复杂度 2 4040506
ID Class Name Entry Weight Value Memo01 软件易用性 易理解性 2 302 软件易用性 易学习性 2 303 软件易用性 易操作性 4 4040506
第 11页 共 20页
开放源代码软件成熟度评估
ID Class Name Entry Weight Value Memo01 软件可用性 完备性 3 402 软件可用性 正确性 4 403 软件可用性 可靠性 4 504 软件可用性 安全性 2 30506
ID Class Name Entry Weight Value Memo01 项目建设与管
理组织架构 2 2
02 项目建设与管理
开发管理 4 4
03 项目建设与管理
网站建设 3 4
0405
ID Class Name Entry Weight Value Memo01 项目的活跃程
度版本发布周期 2 4
02 项目的活跃程度
软件下载量 3 4
03 项目的活跃程度
交流机制 4 4
0405
ID Class Name Entry Weight Value Memo01 项目测试情况 测试方法(工
具)3 4
02 项目测试情况 测试人员 4 403 项目测试情况 测试反馈 2 30405
ID Class Name Entry Weight Value Memo01 软件应用支持 社区支持度 4 402 软件应用支持 企业支持度 3 503 软件应用支持 应用成熟度 3 404 软件应用支持 书籍或文档指
南2 3 新版本中文较
少05
ID Class Name Entry Weight Value Memo01 软件法律问题 软件版权协议 4 402 软件法律问题 专利与纠纷 1 3030405
第 12页 共 20页
开放源代码软件成熟度评估
成熟度评估
评估项 软件 MediaWiKi分
类
子类
别
收集项目 类别 Web 应用子类别 WiKi维基
授
权
许
可
授权
许可
授权许可协议 - 通用公共许可(GNU)
是否与 GNU 通用
公共授权许可
(GPL)兼容
- 兼容
开
发
状
况
主要
开发
者
开发类型 - 社区主要开发人员名称 - WiKimedia Foundation,
Tim Starling
主要开发 人员数
量
- ?
其他
开发
者
其他开发人员数量 - ?
软件
历史
来源 - WiKi派生 - 否
版
本
历史 第一版发布时间 - 2003-12-08
发行历史 - 7年版本
信息
最新版 - 1.19最新稳定版 - 1.18
主要版本时间间隔 - 2 个月
(调查范围) 版本跨度 1.9 - 1.10
升级版本时间间隔 - 2 个月
(调查间隔) 版本跨度 1.8 - 1.9支持
策略
社区支持版本 - 是
交
流
工
具
官方
网站
官方网站的 URL - http://www.mediaWiKi.org/WiKi/MediaWiKi
官方网站的搭建工
具
- MediaWiKi
源代
码库
源代码仓库的 URL - http://www.mediaWiKi.org/WiKi/Download/zh
源代码库的搭建工
具
- MediaWiKi
第 13页 共20页
开放源代码软件成熟度评估
开发
组邮
件列
表
开发组邮件列表地
址
开发组邮件存档信
息页面的 URL- https://lists.WiKimedia.org/mailman/listinf
o/mediaWiKi-l
开发组邮件列表搭
建工具
- MailMan
开发组邮件列表的
邮件数量
1年 ?
用户
邮件
列表
用户邮件列表的地
址
- 无
用户邮件存档信息
页面的 URL- 无
用户邮件列表搭建
工具
- 无
用户邮件列表的邮
件数量
1年 无
BBS(电
子公
告板
系
统)
BBS'的 URL - http://www.mediaWiKi.org/WiKi/Talk:MediaWiKi
BBS 搭建工具 - MediaWiKi
BBS 发帖数量 - ?
BTS: 漏洞
追踪
系统
BTS 的 URL - https://bugzilla.gnome.org/
BTS 搭建工具 - ?
本地
化
本地化/国际化 中国 是总计 超过 300种语言
OS: 操作
系统
支持
Linux - 是Mac OS - 是Windows - 是
BSD 列举具体系统
名称
是
UNIX 列举具体系统
名称
是
程
序
组
成
编程
语言
编程语言 - PHP
源代
码
文件数量 - 1589 有评论代码行数量 - 6108
无评论代码行数量 - 25777
第 14页 共20页
开放源代码软件成熟度评估
构架 插件支持 - 是GUI 设置
工具
官方设置工具 - 无
非官方设置工具 - 无
GUI 管理
工具
官方管理工具 - 无
非官方管理工具 - 无
质
量
漏洞
数量
严重漏洞数量 - ?
其他漏洞数量 - ?
问题
修复
修复比率 - ?
官方
信息
使用手册 中文 是英语,其他 15(英语、德语、西班牙语、芬兰语、法语、
印度尼西亚语、意大利语、日本语、韩语、荷
兰语、波兰语、葡萄牙语、巴西葡萄牙语、越
南、中文)
非官
方信
息
网页数量 中国 8,970,000全球 139,000,000
书籍数量 中文 0英文,其他 0
用户组 中国 ?其他 是
获奖 获奖 - ?组
件
作为
系统
的标
准安
装组
件
红帽 Linux - 是SUSE Linux - 是
Asianux - 是Turbolinux - 是
Debian GNU Linux - 是
FreeBSD - 是Fedora - 是Ubuntu - 是Solaris - 是
安装
包
rpm类型安装包 - 否
deb类型安装包 - 否
ports类型安装包 - 否
pkg类型安装包 - 否
第 15页 共 20页
开放源代码软件成熟度评估
windows 安装包 - 是
其他类型安装包 - 否
商
业
内置
于其
他软
件
有内置于其它软件
或方案套件中
- 无
服务 技术支持维护服务 中国 是其他 是
教育培训服务 中国 无其他 无
云服务 中国 无其他 无
案
例
案例 案例 中国 ?其他 ?
MediaWiKi 软件成熟度评估结论
按照我们的开放源代码软件评估体系计算模型的公司进行计算,最终该软件的评估结果
显示,软件成熟度较好。
参考
1 http://www.mediaWiKi.org/WiKi/MediaWiKi
2 http://www.weekeeweekee.org/mediaWiKi/
3 http://www.knowtive.com/index.php/MediaWiKi
4 http://gnuradio.microembedded.com/ GNU Radio 中文社区
5 http://ossie.microembedded.com/ OSSIE 中文维客
附录:
代码检测
Entries in perl database: 33Entries in ruby database: 46Entries in python database: 62Entries in c database: 334Entries in php database: 55
Severity: MediumIssue: is_dir
第 16页 共 20页
开放源代码软件成熟度评估
A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 126 (mkdir)
File: mediaWiKi-1.17.0//maintenance/language/lang2po.php Line:126[5] if ( !is_dir( $dir ) ) { mkdir( $dir, 0770 ); }
Severity: MediumIssue: is_readableA potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 57 (unlink)
File: mediaWiKi-1.17.0//maintenance/updateSearchIndex.php Line:53[9] } elseif ( is_readable( 'searchUpdate.pos' ) ) {
Severity: MediumIssue: is_fileA potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 2657 (unlink)
File: mediaWiKi-1.17.0//maintenance/fuzz-tester.php Line:2657[4] if ( is_file( $prefix . DATA_FILE ) ) unlink( $prefix . DATA_FILE );
Severity: MediumIssue: is_fileA potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 2658 (unlink)
File: mediaWiKi-1.17.0//maintenance/fuzz-tester.php Line:2658[4] if ( is_file( $prefix . PHP_TEST ) ) unlink( $prefix . PHP_TEST );
Severity: MediumIssue: is_fileA potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 2659 (unlink)
File: mediaWiKi-1.17.0//maintenance/fuzz-tester.php Line:2659[4] if ( is_file( $prefix . CURL_TEST ) ) unlink( $prefix . CURL_TEST );
Severity: MediumIssue: is_fileA potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 2660 (unlink)
File: mediaWiKi-1.17.0//maintenance/fuzz-tester.php Line:2660[4] if ( is_file( $prefix . INFO_FILE ) ) unlink( $prefix . INFO_FILE );
第 17页 共20页
开放源代码软件成熟度评估
Severity: MediumIssue: chdirWhen using this function, it is important to be sure that the string being passed in does not contain relative path elements (../ for example), or a null, which may cause underlying C calls to behave in ways you do not expect. This is especially important if the string is in any way constructed from a user supplied value.
File: mediaWiKi-1.17.0//maintenance/postgres/compare_schemas.pl Line:455[9] chdir("../..");
Severity: MediumIssue: is_writableA potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 76 (dirname) , 79 (basename) , 79 (dirname) , 81 (basename) , 81 (dirname)
File: mediaWiKi-1.17.0//includes/installer/SqliteInstaller.php Line:98[5] if ( !is_writable( $dir ) ) {
Severity: MediumIssue: is_fileA potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 381 (dirname)
File: mediaWiKi-1.17.0//includes/filerepo/FSRepo.php Line:411[4] if ( is_file( $archivePath ) ) {
Severity: MediumIssue: is_fileA potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 582 (unlink)
File: mediaWiKi-1.17.0//includes/filerepo/LocalFile.php Line:580[4] if ( is_file( $thumbDir ) ) {
Severity: MediumIssue: is_dirA potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 566 (opendir)
File: mediaWiKi-1.17.0//includes/filerepo/FSRepo.php Line:563[26] if ( !file_exists( $path ) || !is_dir( $path ) ) {
Severity: MediumIssue: pfsockopen
第 18页 共 20页
开放源代码软件成熟度评估
Argument 1 to this function call should be checked to ensure that it does not come from an untrusted source without first verifying that it contains nothing dangerous.
File: mediaWiKi-1.17.0//includes/memcached-client.php Line:699[7] $sock = pfsockopen( $ip, $port, $errno, $errstr, $timeout );
Severity: MediumIssue: fsockopenArgument 1 to this function call should be checked to ensure that it does not come from an untrusted source without first verifying that it contains nothing dangerous.
File: mediaWiKi-1.17.0//includes/memcached-client.php Line:701[7] $sock = fsockopen( $ip, $port, $errno, $errstr, $timeout );
Severity: MediumIssue: is_dirA potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 182 (opendir)
File: mediaWiKi-1.17.0//includes/filerepo/ForeignAPIFile.php Line:181[4] if ( is_dir( $dir ) ) {
Severity: MediumIssue: is_dirA potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 572 (rename)
File: mediaWiKi-1.17.0//includes/filerepo/LocalFile.php Line:565[4] if ( is_dir( $thumbPath ) ) {
Severity: MediumIssue: is_dirA potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 602 (opendir)
File: mediaWiKi-1.17.0//includes/filerepo/LocalFile.php Line:601[4] if ( is_dir( $dir ) ) {
Severity: MediumIssue: is_fileA potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 216 (rename)
File: mediaWiKi-1.17.0//includes/filerepo/FSRepo.php Line:244[5] if ( !is_file( $srcPath ) )
第 19页 共20页
开放源代码软件成熟度评估
Severity: MediumIssue: is_fileA potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 227 (chmod)
File: mediaWiKi-1.17.0//includes/filerepo/FSRepo.php Line:405[4] if( is_file( $dstPath ) ) {
Severity: MediumIssue: is_fileA potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 267 (unlink)
File: mediaWiKi-1.17.0//includes/filerepo/FSRepo.php Line:247[5] if ( !is_file( $toAppendPath ) )
Severity: MediumIssue: is_dirA potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 34 (fopen)
File: mediaWiKi-1.17.0//includes/media/PNGMetadataExtractor.php Line:31[33] elseif ( !file_exists($filename) || is_dir($filename) )
Severity: MediumIssue: fsockopenArgument 1 to this function call should be checked to ensure that it does not come from an untrusted source without first verifying that it contains nothing dangerous.
File: mediaWiKi-1.17.0//includes/proxy_check.php Line:33[8] $sock = @fsockopen($ip, $port, $errno, $errstr, 5);
File: mediaWiKi-1.17.0//includes/ZhClient.php Line:36[12] $this->mFP = fsockopen($this->mHost, $this->mPort, $errno, $errstr, 30);
Severity: MediumIssue: is_dirA potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 38 (fopen)
File: mediaWiKi-1.17.0//includes/media/GIFMetadataExtractor.php Line:35[33] elseif ( !file_exists($filename) || is_dir($filename) )
Inputs detected at the following points
第 20页 共 20页