由于織夢(dedecms)是開源程序漏洞也是比較多的,但是由于漏洞問題,可以說使用這款程序建站的站長朋友們無時不在擔憂被掛馬,攻擊,掛黑鏈等。小編之前也寫了一些關于織夢被入侵的一些防范文章總結。因為只要是被掛馬了不只是掛在一個文件中,模板,后臺等都會被掛,今天又遇到了一種掛馬的方法,那就是通過SQL注入。
那么是如何注入的呢?留心的站長們會發(fā)現(xiàn)在首頁文章的最下面一般會有一個對文章進行投票的模塊圖標,當我們打開投票模塊代碼的時候發(fā)現(xiàn)投票模塊代碼沒有對用戶提交過來的SQL參數(shù)進行轉義。這就導致了入侵者有機可乘了。作為一個程序員而言在開發(fā)的時候都會使用addslashes()函數(shù)對用戶提交過來的數(shù)據(jù)進行轉義操作,那么在這個模塊代碼中該如何進行轉義呢?下面小編就來詳細的講解下方法吧。
那么是如何注入的呢?留心的站長們會發(fā)現(xiàn)在首頁文章的最下面一般會有一個對文章進行投票的模塊圖標,當我們打開投票模塊代碼的時候發(fā)現(xiàn)投票模塊代碼沒有對用戶提交過來的SQL參數(shù)進行轉義。這就導致了入侵者有機可乘了。作為一個程序員而言在開發(fā)的時候都會使用addslashes()函數(shù)對用戶提交過來的數(shù)據(jù)進行轉義操作,那么在這個模塊代碼中該如何進行轉義呢?下面小編就來詳細的講解下方法吧。
首先根據(jù)路徑找到/include/dedevote.class.php文件,使用一款編輯軟件打開。
查找以下代碼:
替換為:
其實也就是addslashes()改為mysql_real_escape_string()對模塊投票提交過來的數(shù)據(jù)進行轉義后再向數(shù)據(jù)庫提交,這樣轉義之后就會把例如逗號,雙引號全部轉義成單斜杠了。這樣就可以有效的防范投票的時候被SQL注入的風險了。$this->dsql->ExecuteNoneQuery("UPDATE`xiuzhanwang_vote`SET totalcount='".($this->VoteInfos['totalcount']+1)."',votenote='".addslashes($items)."' WHERE aid='".$this->VoteID."'"); |
替換為:
$this->dsql->ExecuteNoneQuery("UPDATE`xiuzhanwang_vote`SET totalcount='".($this->VoteInfos['totalcount']+1)."',votenote='".mysql_real_escape_string($items)."' WHERE aid='".mysql_real_escape_string($this->VoteID)."'"); |