最近不得已用dedecms来做项目,已经很久没用dede了,现在的版本都好高,功能也强不少。记得以前dede会背地里向服务器发送网站的地址之类的信息,这次测试发现,在浏览器这层,除了向dede的网站请求了几张图片之外,没有其它多余的动作。正当我以为dede走上正道的时候,发现页面底部默认的友情链接列表里有一堆不知道哪里来的链接,后台数据库里并没有这些内容。网上搜了一把,主要是自己懒不想动脑子,说是dede在解析模版标签的时候偷偷的加上去的。于是,还得动脑子了。
在dede的include/taglib/flinktype.lib.php文件中对type做了判断,凡是id为999的,就是“织梦链”。只要删了下面这段,就可以不显示了。
$dedecms = false;
$dedecms->id = 999;
$dedecms->typename = ‘织梦链’;
if($type == ‘dedecms’) $row[] = $dedecms;
到这里应该说问题解决了,“织梦链”被干掉了,欢呼吧。
打住,这只是把type给干掉了,那“织梦链”依然存在,只是因为没有了type系统不会显示而已。这些“织梦链”到底从哪里来的呢?
跟flinktype.lib.php同一个目录有一个flink.lib.php,打开。你会发现有这么一段:
if($typeid == 0)
{
$wsql .= ”;
}
else if($typeid == 999)
{
//require (DEDEDATA.’/admin/config_update.php’);
//if (!class_exists(‘DedeHttpDown’, false)) {
//require_once(DEDEINC.’/dedehttpdown.class.php’);
//}
//$del = new DedeHttpDown();
//$del->OpenUrl($linkHost);
//$linkUrl = $del->GetHtml().”flink.php?lang={$cfg_soft_lang}&site={$_SERVER['SERVER_NAME']}”;
//$del->OpenUrl($linkUrl);
//$linkInfo = $del->GetHtml();
//if(!empty($linkInfo)){
//$dedelink = explode(“\t”, $linkInfo);
//for($i=0; $i<count($dedelink); $i++) {
//if($i%5==0 && $i!=count($dedelink)) {
//$revalue .= “<li><a href=’http://”.@$dedelink[$i+1].”‘ target=’_blank’ title=’”.@$dedelink[$i+4].”‘>”.@$dedelink[$i].”</a></li>”;
//}
//}
//}
//return $revalue;
}
else
{
$wsql .= “And typeid = ‘$typeid’”;
}
注意被我注释掉的部分,系统先创建一个http连接,去dede的风站上把“织梦链”的数据下载下来,与此同时,你的网站的地址也被发送给了dede。我说怎么在浏览器跟踪不到dede去访问他们自己的网站,原来它是通过PHP在服务器端来偷发数据,这下被打回原形了。注释掉或是删掉上面相关代码,“织梦链”才算真正被消灭。
dede在这方面的技术看来是越来越精了,一个友情链接都会出这样的事,更何况系统的核心代友码。新版本的dede必要要从 头把代码过滤一遍才行了。
就这么多。睡觉,太困了。
Post a Comment