开放平台
首页
我的应用
我的分销
开发文档
技术社区
魔方加密
WitFrame
注册
登录
资料设置
消息提醒
财务管理
密码安全
身份认证
退出
Discuz! 应用中心应用审核规范
<p class="y">最后修改:2021-4-10 版本:V1.1.5</p> ## 文件包规范 1. 所有打包上传的文件必须为 ZIP 格式的压缩文件,压缩包及包内的任何文件均不得经过任何方式的加密(魔方加密除外) 2. 文件包中禁止包含说明文档文件,请使用“说明文档”或“资料下载”功能为站长提供 ## 应用名称规范 1. 不能含有“官方”、“推荐”等类似误导站长的字样 2. 不能含有涉嫌“和谐”内容的字样 ## LOGO 规范 1. 必须上传 LOGO 图片 2. 同一作者的多个插件不能共用一个 LOGO(需合并安装的除外) ## 应用简介规范 1. 不能包含“官方推荐”、“官方合作”等类似误导站长的介绍 2. 不能包含任何非应用中心的收费版或授权销售的推广链接(比如,点此购买高级版,如果这个链接是跳转到应用中心收费版的可以,跳转到非应用中心其他网站的不可以) 3. 不能包含下载外站文件等的链接(比如在简介中提供一个链接要求用户点链接下载文件并放置到某文件夹或覆盖某文件后插件才能正常使用,这种情况是不被允许的) 4. 对于使用时不明白用法的插件应要求作者在简介中注明使用方法或者提供使用说明文档给用户 5. 应用有需要前置条件的,应当在介绍靠前位置加粗说明,比如需要先安装其他应用的(已设置前置应用的可忽略) ## 预览及截图规范 1. 必须含有至少一个预览截图 2. 截图的内容应与应用功能相符 3. 模板预览图的样式应与模板的样式相符 4. 模版后台的预览图大小要符合要求,且要能正确的显示模板风格 5. 模版预览图和后台预览图且不允许植入广告、色情等违法等内容,不允许有包含背景的大型文字(>10%面积) 6. 插件如果有后台设置项目,应当包含后台设置相关的截图 ## 版本命名及创建规范 1. 版本名称应简单易懂,版本号推荐x.x.x或x.x格式 2. 不允许一个每一次升级就发布一个应用,程序升级应使用版本升级功能 3. 应用的不同版本要放在同一个应用下 4. 模版同一版本不同色彩样式要放在同一应用中,禁止换个颜色就新增一个应用 5. 404 相关的页面类应用归入扩展类应用范畴 ## 安装使用规范 1. 能够正常在应用中心下载安装成功。包含自身版权保护功能的应用,必须在审核备注中清晰注明“越狱”方法,以供审核员审查 2. 需要授权码之类的应要求开发者提供测试试用码,在审核备注中说明 3. 安装完成启用后,插件应该就可以使用,而不能再进行其他安装类操作 4. 插件启用后后台设置、表单提交等功能应能正常使用,不能出现 SQL 报错或白页等类似的错误 5. 插件前台功能应与描述相符,无明显 Bug 6. 如果插件必须一来另一应用才能正常使用,则该插件与那个应用必须设置为合并安装,若因收费等原因不能设置合并安装,则应在简介的显著位置说明清楚,有前置要求的,须设置为前置应用 7. 禁止任何要求用户手动移动文件的行为 8. 一些作者注明测试或者自用等的应用审核通过后应设置为上架(隐藏)状态 9. 凡是支持 X3.1 及以上版本的手机版模板,严禁使用移动、复制文件的安装方式(X3 及以下版本允许),且必须支持后台设置默认手机风格设置 ## 应用内容规范 1. 禁止发布直接 iframe 外嵌其他网站且没有和论坛互动功能的应用 2. 禁止发布应用主体功能为 iframe 、Flash 或者 js 直接嵌套外站的 3. iframe 中嵌套的外部站点链接,非认证用户只允许嵌套知名网站链接,不允许嵌套私人小网站等安全性不可确认的网站 4. 代码不可加密,要有比较整洁的代码格式,格式太乱导致阅读困难的插件不予通过 5. 插件不能有对 plugin 目录以外任何文件的操作,包括修改删除源文件或新增其他文件(缓存目录除外),如果有写 log 或者类似 sitemap.xml 这样的文件,应用卸载程序中应该有删除这些文件的操作 6. 插件在安装或运行过程中,如果在缓存目录写了文件,那么在卸载插件时要能自动将这些文件删除 7. 禁止安装模版时自动合并安装多个不相干的插件 8. 禁止应用前台包含含有应用作者网站的网址,只允许放置在后台。前台只允许在应用底部或页脚添加版权的文字及链接,如“Designed by”等类似文字 9. 禁止应用去除标题及页脚的“Powered by Discuz!”文字 10. 与默认模板相比改动较小的应用,不允许审核通过 11. 免费应用前台和后台均不能有非应用中心付费版或授权销售的推广链接 12. 插件及模版必须兼容主流浏览器(IE、Chrome、Firefox)。其中 IE6、7必须兼容哪怕关闭某些效果或功能(2014.4.8 起将放弃对IE6、7的审核) 13. 不兼容宽版的模板必须保证在宽版特性下显示出正常的窄版 14. 禁止在代码中通过隐藏暗链的方式给自己网站增加 SEO 15. 模板类的应用禁止只变更少量图片就新增一个应用的做法 16. 不允许依赖任何纯 FLASH 内容(但允许 FLASH 和 HTML5 双版本,浏览器支持 HTML5 采用 HTML5 ,反之采用 FLASH )<b class="xi1">New!</b> ## 应用代码规范 1. 禁止通过各种方式携带有危害用户站点安全的代码,一经发现一律封号处理 2. 根据 Discuz! 版本的不同和数据库操作方式的不同,所有涉及数据库操作的 GET、POST、Request、Cookie 变量和 getgpc() 函数获取的变量都要进行安全过滤 3. 所有参与文件操作的 GET、POST、Request、Cookie 变量和 getgpc() 函数获取的变量都要进行安全过滤和合法性验证(如以上变量作为被操作文件的路径或文件名称时) 4. 对于会对 GET 等变量进行统一处理或封装的应用,应严格注意处理过程是否安全 5. 所有进行表单处理或请求处理的文件中都应验证请求来路的合法性,添加`submitcheck()` 6. 所有文件开头必须有`IN_DISCUZ`判断、所有使用后台操作的文件必须有`IN_ADMINCP`判断(个别 api 接口文件除外) 7. 为防止 XSS 漏洞,对于输出到页面中的某些变量务必进行 dhtmlspecialchars() 过滤 8. 对系统敏感数据表如 post、thread、member 表的 SQL 操作,要注意效率问题,建议创建新表,而不是添加字段 9. 注意代码中匹配替换的地方,防止正则表达式书写上的漏洞 10. 注意模版中的一些敏感函数,如`eval()`等是否包含恶意代码 11. 注意代码中是否有通过各种手段非法拼凑活截断加入非法链接或代码的地方 12. 文件目录中不能有与插件不相关的文件,如一些 bak、svn 文件等 13. 跟踪各种 SQL 操作,以防止 SQL 注入,确定 SQL 语句中最后操作的变量都是安全的,注意对关键表如 member 表的 SQL 操作性能问题 14. 有的开发者文件中存在非法操作,指出后他会修改,但审核通过后他又会更新改回去,这种现象常见与对 plugin 目录外的文件操作 15. 模板类型的应用严禁包含插件以及插件特性的代码逻辑,但允许包含含有模板输出逻辑的 php 文件,且 php 文件必须放在“TPLDIR/php”目录下`{eval include TPLDIR.'/php/xxx.php';}` 方式引用 16. 插件类型的应用严禁通过修改系统变量的方式修改他人应用返回内容<b class="xi1">New!</b> 17. 模板类型的应用严禁去除任何系统内置的嵌入点,但允许添加嵌入点<b class="xi1">New!</b> 18. “分支版本”、“扩展组件”中禁止提交包含中文文件名的任何文件,以防应用在线安装失败<b class="xi1">New!</b> 19. 原则上不允许依赖 `MAGIC_QUOTES_GPC` 常量或者 PHP 自带的魔术引号相关函数,如必须使用则需要先判定是否存在<b class="xi1">New!</b> 20. 必须支持 HTTPS 和 HTTP 自适应,不允许写带协议头的链接请求站内资源,不允许以 HTTP 方式请求站外资源<b class="xi1">New!</b> 21. 不允许依赖 `$_GET|$_POST` 的兼容处理 ,即 `$_G['gp_xxx']` 取值<b class="xi1">New!</b> 22. 系统内 jQuery 不保证版本号稳定。如果需要一个稳定的版本,应采用自带的组件,并使用闭包内调用 jQuery ,且通过 `var plugin_(plugin_identifer)_jquery = jQuery.noconflict(true);` 处理兼容性问题。其他组件命名方式为 `plugin_(plugin_identifer)_name` 。不允许裸调用 `jQuery.noconflict()` (不带声明)<b class="xi1">New!</b> 23. 数据表命名推荐采用 `pre_plugin_(plugin_identifer)_example` 进行命名。目前也接受其他命名方式,如大量作者选择的 `pre_(plugin_identifer)_example` ,但强制性规范禁止的命名规则除外<b class="xi1">New!</b> 24. 自带表类必须兼容 LSP ( [Liskov 替代原则](https://php.watch/articles/php-lsp) )。如果依赖于主线表,不允许依赖 table 表的兼容性命名。兼容多版本需要自行判定并调用不同名称的方法,或开启不同分支版本维护<b class="xi1">(X3.5起强制要求)New!</b> 25. 如涉及到 IP 地址,必须兼容 IPv6 的存储、处理,必须同时存储连接时使用的端口号<b class="xi1">(X3.5起强制要求)New!</b> 26. 不允许使用 array_key_exists 判断 `$_G` 以及 `$_G['example']` 是否存在<b class="xi1">(X3.5起强制要求)New!</b> 27. 页面如并非如邮件等特殊功能,应统一采用 `<!DOCTYPE html>` 作为头部<b class="xi1">(X3.5起强制要求)New!</b> ## 应用类型限制 1. 单机 Flash 游戏或网页游戏类的插件不允许发布 2. 在线后台服务器文件管理类等涉及安全的应用不允许发布 3. 功能过于简单或页面样式过于粗糙的应用不允许发布 4. 验证码、验证问答类应用必须用内置的接口实现,否则不允许发布 ## 其他说明 1. 代码无更新提交审核的,第一次警告,第二次执行锁定操作 2. 同一问题三次不修改且无任何说明的,执行锁定操作
开发文档
平台介绍
技术文档