您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
Ecshop和Discuz开源产品有哪些局限性
雁卉2025-06-29Discuz教程已有人查阅
导读记得今年年初,我初次接触Discuz!和Ecshop时,一阵阵地惊叹:成熟度这么高的产品,居然是免费的。我们这些搞传统软件开发的要怎么活?
记得今年年初,我初次接触Discuz!和Ecshop时,一阵阵地惊叹:成熟度这么高的产品,居然是免费的。我们这些搞传统软件开发的要怎么活?另外也奇怪,做这些产品的公司,他们要怎么活?
我公司的网站,原型正好是用Ecshop和Discuz!,到开发方移交给我们后,我们做二次开发,深入了解了其代码,早期的疑惑才有了答案。
可以说,这些产品,都无法支持真正严肃的应用环境。
1)所有的数据库访问都不用mysqli连接,因此无法用prepared statement,而全部用拼接方式。
这些系统,对数据库(主要都是mysql)的访问,全部采用sql拼接方式。举一个Ecshop的例子:
所以,这种系统几个人用应该是快如闪电,并发量一大,后台数据库可能被搅成一锅粥了。
正确的连接数据库的方法应该是:
2)系统安全性极差
因为不用prepared statement,只要编程人员不注意,sql injection可以说到处都有可能。但看看他们的代码,可以说压根不注意。因为这些系统,对用户输入几乎不用转义。
对于已经很烂的代码,正确的用法是应该有第二行:
这样造成的问题就是,针对这些系统的机器人极多。基本上你的论坛上线不久很快就被机器人发的水贴、广告贴盯上了。
本人对这些系统研究还很肤浅,不过看到这两条,就已经明白,这种系统是供学习用的。开发这些产品的公司,他们的水平很高,不过高质量的代码应该是用在了商业性收费的产品上。大家别以为可以捡到便宜。
我公司的网站,原型正好是用Ecshop和Discuz!,到开发方移交给我们后,我们做二次开发,深入了解了其代码,早期的疑惑才有了答案。
可以说,这些产品,都无法支持真正严肃的应用环境。
1)所有的数据库访问都不用mysqli连接,因此无法用prepared statement,而全部用拼接方式。
这些系统,对数据库(主要都是mysql)的访问,全部采用sql拼接方式。举一个Ecshop的例子:
$w_openid = $db -> getOne("SELECT `wxid` FROM `wxch_user` WHERE `wxid` = '$openid'");
或类似
$wxch_user_sql = "INSERT INTO `$thistable` ( `user_name`,`password`,`field3`,`field4`) VALUES ('$variable1','$variable2','value3','value4')";
$db -> query($wxch_user_sql);
这种语句,偶尔出现倒也可以理解,如果所有的地方都是这样(正如Ecshop),则应该出于对数据库只有入门水平的人手里。因为他完全没有使用prepared statement的概念。所以,这种系统几个人用应该是快如闪电,并发量一大,后台数据库可能被搅成一锅粥了。
正确的连接数据库的方法应该是:
$mysqli = new mysqli("server", "username", "password", "database_name");
而不是
$conn = mysql_connect('server','username','password') or die ("数据连接错误!!!");
正确的sql语句应该是:
$stmt = $mysqli->prepare("INSERT INTO table (column) VALUES (?)");$stmt->bind_param("s", $safe_variable);$stmt->execute();
而不是前面那样。2)系统安全性极差
因为不用prepared statement,只要编程人员不注意,sql injection可以说到处都有可能。但看看他们的代码,可以说压根不注意。因为这些系统,对用户输入几乎不用转义。
对于已经很烂的代码,正确的用法是应该有第二行:
$unsafe_variable = $_POST["user-input"];
$safe_variable = mysql_real_escape_string($unsafe_variable);
mysql_query("INSERT INTO table (column) VALUES ('" . $safe_variable . "')");
但在这些系统里,上面的第二行很少看到。这样造成的问题就是,针对这些系统的机器人极多。基本上你的论坛上线不久很快就被机器人发的水贴、广告贴盯上了。
本人对这些系统研究还很肤浅,不过看到这两条,就已经明白,这种系统是供学习用的。开发这些产品的公司,他们的水平很高,不过高质量的代码应该是用在了商业性收费的产品上。大家别以为可以捡到便宜。
本文标签:
很赞哦! ()
相关教程
图文教程
DiscuzX插件开发手册
文件命名规范Discuz! 按照如下的规范对程序和模板进行命名,请在设计插件时尽量遵循此命名规范:可以直接通过浏览器访问的普通程序文件,以 .php 后缀命名。
Discuz!X2 、Ucenter 1.6、ASP.NET程序整合步骤
对于ASP.NET 程序员来说,去整合PHP的应用实在有点别扭,但那也没有办法,即然是做程序的这些是避免不了的,既然免不了,那就上吧第一步:准备相关程序
Discuz的缓存体系
1.session Dz的session只保存了登陆状态,不是我们理解的保存整个会话状态的概念我们通常意义上的缓存应该是对应到discuz的memory这一块,其他的三项可能是历史遗留问题,造成在使用时有较多的入口。
Discuz常见漏洞汇总
Discuz ML! V3.X 代码注入代码注入导致RCEDiscuz! X2.5 远程代码执行(1).注册任意账户(2).登陆用户,发表blog日志(注意是日志)(3).添加图片,选择网络图片
相关源码
-
(自适应响应式)蓝色外贸英文产品介绍展示网站模板本模板采用手工编写的DIV+CSS架构,代码精简高效。适配手机端浏览,数据实时同步更新。内置SEO优化框架,支持独立设置各页面标题、关键词及描述。开源代码结构清晰,便于二次开发。查看源码 -
(自适应响应式)pbootcms紫色美容整形机构企业模板下载基于PbootCMS内核开发的响应式网站模板,为医疗美容机构、整形医院等企业设计,提供完整的线上展示平台采用紫色系配色方案,整体风格专业大气。模板包含首页轮播、服务项目、专家团队、案例展示等核心模块,能够充分展示医疗美容机构的专业服务和特色优势。查看源码 -
(PC+WAP)蓝色钢材加工建筑装修施工材料网站模板下载为钢材加工企业设计的PbootCMS响应式模板,采用PC+WAP双端适配技术,数据实时同步。简洁大气的蓝色工业风格设计,突出钢材加工行业特性,其他制造业用户更换图文内容即可快速应用。查看源码 -
(PC+WAP)安保服务保安保镖模板免费下载本模板基于PbootCMS内核开发,为安保服务企业量身打造。设计风格严谨专业,突出安保行业的安全、可靠特性,展示企业服务项目与实力。采用响应式设计,PC与移动端数据同步,管理便捷。模板布局合理查看源码 -
(PC+WAP)聚氨酯粉末涂料防腐耐用材料粘合剂网站源码下载为化工涂料企业设计的展示系统,集成产品技术参数库、颜色样板展示器和配方查询模块。支持粉末涂料、环氧树脂等多类产品分类展示查看源码 -
(PC+WAP)房屋建造建筑工程房地产建材行pbootcms网站模板下载本模板基于PbootCMS内核开发,为房屋建造、建筑工程及房地产建材类企业设计。通过本模板可快速搭建具有行业特色的企业官网,只需替换文字与图片内容即可适配其他行业使用。查看源码
| 分享笔记 (共有 篇笔记) |
