新聞中心
Ecshop教程:通過修改過濾模板里的php代碼,防止模板被掛馬
作者 / 無憂主機 時間 2015-09-10 23:26:44
最近有些使用ecshop的老用戶在php免備案空間上的網(wǎng)站經(jīng)常被掛馬,雖然在網(wǎng)上有個多的處理方法,可能是由于版本過低,很多新的修復補丁沒有打上吧導致經(jīng)常掛馬;對代碼又不懂的人來說,確實很麻煩。要知道ecshop的模板是支持php代碼的,這就給一些不法分子創(chuàng)造了掛馬的機會,這些不法分子掛馬步驟很可能是: 1、通過ecshop的漏洞搞sql注入,暴出管理員密碼md5值,然后通過**md5得到管理密碼。(注:防止暴出管理密碼md5值的方法是關(guān)閉display_errors,并且修改cls_mysql.php里的ErrorMsg函數(shù),注釋掉所有錯誤輸出代碼或把錯誤寫入文件) 2、進入管理后臺,通過模板管理-》庫項目管理,編輯lbi文件,添加php代碼,例如<?php @eval($_POST['lx']);?> 3、到這里,就完全控制這個站了,想掛什么馬就掛什么馬。 可見,ecshop的模板支持php代碼這點是非常危險的,因此我們應該過濾模板里的所有php代碼。雖然新的補丁有這個功能,打上新的補丁就可以了,但是無憂小編在網(wǎng)上找到了一個更為靈活的方法,就是添加一個函數(shù)代碼: 1、修改cls_templage.php文件,添加函數(shù):
function delete_php_code($content) { if(!empty($content)) { $pattern='/\<\?(.|\r\n|\s)*\?\>/U'; return preg_replace($pattern,'',$content); } }2、第165行
$out = $this->_eval($this->fetch_str(file_get_contents($filename)));修改為:
$out = $this->_eval($this->fetch_str($this->delete_php_code(file_get_contents($filename))));3、第260行
$source = $this->fetch_str(file_get_contents($filename));修改為:
$source = $this->fetch_str($this->delete_php_code(file_get_contents($filename)));這樣一來,模板里的php代碼就被過濾掉了,防止模板被掛馬。 無憂主機相關(guān)文章推薦閱讀: ECSHOP教程:團購提示“商品庫存不足” ECSHOP教程:設(shè)置商品比較浮動塊的上下位置 ECSHOP如何把商品詳情頁用戶評論修改為商品名稱+評論字樣的方法
本文地址:http://m.love62.cn/ecshop/20117.html