emlog6.0标签查询bug

emlog6随便访问一个不存在的标签链接,例如:http://blog.dzzui.com/tag/不存在的标签

SQL语句执行错误: SELECT `gid` FROM `emlog_tag` WHERE `tid` = You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

报错过程:通过访问标签链接路由分配到tag_controller.php控制器,控制器中执行到函数getTagByName,直接tag_model.php中大概47行函数。

getTagByName中有2个函数getIdFromName和getTagById,getIdFromName会出现false的情况,getTagById没考虑到这种情况导致的。

然后根据tag_controller.php之后的情况,修改函数getTagByName最为合适。 建议修复,因为SQL报错会被一些安全网站或者搜索引擎识别为安全漏洞,减低权限。

修复方法:

tag_model.php中大概47行函数改为如下

function getTagByName($tagName) {
	$tagId = $this->getIdFromName($tagName);
	return $this->getTagById($tagId);
}
修改为
function getTagByName($tagName) {
	$tagId = $this->getIdFromName($tagName);
	if ($tagId) {
		return $this->getTagById($tagId);
	} else {
		return false;
	}
}
打赏

作者:独醉复制或转载请以超链接形式注明转自 独醉博客
原文名称:emlog6.0标签查询bug
原文地址:http://blog.dzzui.com/147.html

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)