開啟輔助瀏覽

Besv 技術討論區

 找回密碼
 立即註冊
搜尋
查看: 1615|回覆: 5

Discuz最近更新20160601的分析

[複製連結]
發表於 2016-7-28 16:37:52 | 顯示全部樓層 |閱讀模式
聽網友介紹Discuz近日發布了更新20160601,本文將它和上一個版本20151208比較下更新的內容。用Beyond Compare做了個binary比較,發現共有18個文件有改動。


下面具體分析下這18個文件裡的改動:

一) 圖像處理庫ImageMagick調用方式的改進
ImageMagick是一個用於查看編輯位圖文件以及進行圖像格式轉換的圖像格式轉換的開源軟件,它提供的是編譯後的可執行文件及動態鏈接庫。一般在命令行裡調用。Discuz允許站長選擇GD和ImageMagic其中之一來作圖像處理。在舊版本中GD是作為PHP擴展來使用的,而ImageMagick的調用方式是用exec函數來執行命令行的命令。這種辦法容易有安全隱患,見這裡的分析。新的版本則利用了一個叫imagick的PHP擴展來調用ImageMagick裡的命令。

  • 1. source\admincp\admincp_checktools.php
  • 3. source\admincp\admincp_setting.php
文件3)在三處去掉了與有關ImageMagick路徑設置imageimpath的代碼。作用是管理中心裡去掉了該項設置。下面是新舊界面的對照:
舊界面:
新界面:
而文件1)則去掉了使用這個設置的代碼。
  • 5. source\class\class_image.php
在類image裡修改了使用ImageMagick的相關函數image, init, Thumb_IM, Cropper_IM, Watermark_IM, IM_filter裡的代碼。下面以函數Cropper_IM為例看一下新舊調用方式的區別: 新版本:
  1. function Cropper_IM() {    $im = new Imagick();    $im->readImage(realpath($this->source));    $im->cropImage($this->param['srcwidth'], $this->param['srcheight'], $this->param['srcx'], $this->param['srcy']);    $im->thumbnailImage($this->param['dstwidth'], $this->param['dstheight']);    $result = $im->writeImage($this->target);    $ima->destroy();    if(!$result) return -3;}
複製代碼

舊版本:
  1. function Cropper_IM() {    $exec_str = $this->param['imageimpath'].'/convert -quality 100 '.'-crop '.$this->param['srcwidth'].'x'.$this->param['srcheight'].'+'.$this->param['srcx'].'+'.$this->param['srcy'].' '.'-geometry '.$this->param['dstwidth'].'x'.$this->param['dstheight'].' '.$this->source.' '.$this->target;    exec($exec_str);    if(!file_exists($this->target)) return -3;}
複製代碼

  • 10. source\language\lang_admincp.php
在管理中心語言包裡修改了對ImageMagick的使用說明。見上一組新舊圖。

二)安全漏洞修補
  • 9. source\function\function_portalcp.php
唯一的改動是去掉了下面一句裡的紅字部分:
這是基於0keeTeam的安全漏洞報告: Discuz X系列門戶文章功能SSRF漏洞挖掘與分析

三)其它改動
  • 2. source\admincp\admincp_forums.php
  • 11. source\module\forum\forum_forumdisplay.php
  • 18. template\default\forum\viewthread.htm
分別去掉了一行,修改兩行和去掉兩行,和修改一行。目的是刪掉所有與設置值$_G['forum']['threadsorts']['templatelist']有關的代碼。在上兩個版本裡這個值在管理中心(上面文件2))裡從未被賦值,即它就是個總是null值,所以新版本把沒用的代碼清除了。
  • 4. source\admincp\discuzfiles.md5
  • 8. source\discuz_version.php
這兩個是每次更新必有的輔助文件。後一個記載了這次更新的版本號(20160601),前一個記載了每個文件和文件夾內容的總和檢驗碼。當站長修改了某個文件或文件夾後,它們的校驗碼也隨之改變。所以管理中心裡的數據庫校驗和文件校驗需要這個文件來判斷站長改動了站內哪些文件或文件夾。
  • 6.source\class\db\db_driver_mysqli.php
唯一的改動是在數據庫連接函數_dbconnect裡添加了下面紅字的部分:
mysql/nd_mysql和mysqli/nd_mysqli是兩個php擴展。mysqli改進了mysql,它只能用於php5.0以上。在服務器裡這兩個擴展一般都是可用的。而discuz_application.php中的下面的代碼
  1. $driver = function_exists('mysql_connect') ? 'db_driver_mysql' : 'db_driver_mysqli';
複製代碼

決定了當這兩個擴展都可用的時候,Discuz使用mysql/nd_mysql,所以一般mysqli/nd_mysqli不發揮作用。這次的修改是關於driver_mysqli.php的,而在driver_mysql.php的同名函數裡有這次新添的這句,所以這應該是driver_mysqli.php裡的一個疏忽,而這個文件一般沒用,所以才一直沒發現其中的問題。
  • 7. source\class\helper\helper_form.php
  • 12. source\plugin\mobile\discuz_plugin_mobile.xml
  • 13. source\plugin\mobile\mobile.class.php
  • 14.source\plugin\wechat\connect.inc.php
  • 15.source\plugin\wechat\discuz_plugin_wechat.xml
  • 16.source\plugin\wechat\wechat.inc.php
  • 17.source\plugin\wechat\wsq.class.php
兩個設置文件12)和15)改的就是插件版本號。文件7), 13), 14), 17)僅有的改動就是更新了discuz論壇網址:
文件16)僅有的改動是加了下面這段,意思似乎是不讓插件裡從discuz論壇網頁跳轉到其它網站:


評分

2

查看全部評分

發表於 2016-7-28 17:23:01 | 顯示全部樓層
直接從別人家抓的?

點評

==這是我跟另一個人一起寫的...  發表於 2016-7-28 18:52
 成长值: 30336
發表於 2016-7-28 17:44:51 | 顯示全部樓層
轉載要經過作者同意,不然被告就麻煩了~~

點評

那就好~感謝提供我們資訊  發表於 2016-7-28 20:13
這是我與另一個人的文章....之前在我自已的論壇已經發過並研究過了,怎麼可能會被告...告自己?  發表於 2016-7-28 18:54
您需要登入後才可以回文 登入 | 立即註冊

本版積分規則

黑名單|客戶連結|客服信箱|客服系統

Copyright © 2013 - 2019 Besv Technology Forum

專業網站主機服務

Powered by Discuz!

Wildcard SSL Certificates

快速回覆 返回頂部 返回列表