新聞中心
DiscuzX2.5版本任務(wù)模塊刷積分漏洞解決辦法
雖然說現(xiàn)在論壇都已經(jīng)出到的DiscuzX3.1版本了,但是有很多老站,當(dāng)時使用的還是老版本的Discuz,一直就沒有更新。這不,前段時間有個老版本的客戶由于擔(dān)心升級后,插件還有主題都不可以使用了,所以沒升級。但是今天他發(fā)現(xiàn)了網(wǎng)站有一個問題,就是出現(xiàn)了下面的奇怪現(xiàn)象:完成(新手)任務(wù)后并發(fā)刷新頁面可能會導(dǎo)致重復(fù)增加積分。 [caption id="attachment_13941" align="alignnone" width="537"] discuz刷積分截圖[/caption] 通過查詢官網(wǎng)資料,無憂主機小編發(fā)現(xiàn),這原來是老板Discuz的一個漏洞。 癥狀:當(dāng)完成(新手)任務(wù)后并發(fā)刷新頁面可能會導(dǎo)致重復(fù)增加積分 影響版本:Discuz 7 - Discuz X2.5 所有版本 解決方法是: home_task.php 中的 $result = $tasklib->delete($id); showmessage('task_deleted', 'home.php?mod=task&item=doing'); 替換成 if(!$_G['uid']) { showmessage('not_loggedin', NULL, array(), array('login' => 1)); } $task = C::t('common_task')->fetch($id); if($task['available'] != 2) { showmessage('task_nonexistence'); } elseif(($task['starttime'] && $task['starttime'] > TIMESTAMP) || ($task['endtime'] && $task['endtime'] <= TIMESTAMP)) { showmessage('task_offline'); }elseif($task['tasklimits'] && $task['achievers'] >= $task['tasklimits']) { showmessage('task_full'); } $mytask = DB::fetch_first("SELECT *, dateline AS applytime FROM %t where uid=%d AND taskid=".$id, array( 'common_mytask', $_G['uid'])); if(!$mytask || $mytask['status']!=0){ showmessage('task_not_underway'); }else{ $task['applytime'] = $mytask['applytime']; } require_once libfile('task/'.$task['scriptname'], 'class'); $taskclassname = 'task_'.$task['scriptname']; $task_class = new $taskclassname; if(method_exists($task_class, 'csc')) { $result = $task_class->csc($task); } else { showmessage('task_not_found', '', array('taskclassname' => $taskclassname)); } if($result === TRUE || $result['csc']) { showmessage('task_doing', 'home.php?mod=task&do=view&id='.$id); } else { $result = $tasklib->delete($id); showmessage('task_deleted', 'home.php?mod=task&item=doing'); } class_task.php中 343行 } elseif($this->task['status'] != 0 ) { 替換成 } elseif($this->task['status'] != 0 || !$this->task['dateline']) { 快捷方法是使用無憂小編已經(jīng)修改好的文件,直接替換原來的文件即可。 文件路徑 source/module/home/home_task.php source/class/class_task.php 如此操作即可解決問題。 相關(guān)文章推薦閱讀: DZ安裝不適合的插件引起應(yīng)用報錯提示“空間不支持CURL” DISCUZ論壇首頁的“最后發(fā)表”和“最后回復(fù)”設(shè)置偽靜態(tài)的方法 DISCUZ更換域名后提示:REDIRECT URI IS ILLEGAL(100010)及解決辦法
本文地址:http://www.gle-technology.com/discuz/13940.html