隨著PHP 5.6將在12月31日中止安全更新,整個PHP 5的世代都將告一段落,但問題是,全球與臺灣都還有一半以上的PHP網站,還沒有升級PHP 7(PHP 6未發行),導致他們即將面臨新漏洞被發現,卻無以修補的狀況,導致網站的潛在安全風險增加。
儘管一兩年前,PHP開發團隊就已經警告,PHP 5最後一版是5.6,同時他們也將該版的主要與安全的更新支援延長,讓用戶能有更多轉換準備時間。後續,他們也將開發資源移轉至PHP 7,期望用戶加速網站升級的動作。
但從現況來看,距離PHP 5.6最後的安全支援期限,只剩一個月了,仍有相當高比例的PHP網站沒有做出因應。而這樣的現象,也讓網站程式語言不升級的風險隱憂浮上檯面。
例如,很多網站仍使用早已停止安全支援的PHP版本,沒有定期檢查與更新伺服器的觀念,網站外包的企業更是可能根本沒有概念,這似乎造就了網站安全上的一個盲點。
面對PHP 5即將停止支援,從安全角度來看,最好的解決辦法就是,現在開始著手升級PHP 7;第二個選擇,若尚未做好準備升級而仍然使用PHP 5,必須知道應採取相關防護措施,減少風險;至於最後一種辦法,則是不使用PHP。不過,這種方式的代價可能太大,因為也要評估其他程式語言的可適性。因此,前兩種辦法相對比較實際,就是當今用戶的主要因應方式。
既有PHP 5網站尚未升級
|
先進行升級的相容性測試,才能了解PHP網站需修改的幅度並評估
基本上,對於還沒升級的網站而言,應審視網站程式語言生命週期結束,對於企業的影響與衝擊,一旦有漏洞發生,可能面臨的風險有多大,自行處理可能性有多高,暫時的替代方案有那些,以及更新版本的成本也要評估。簡單來說,實務上要從風險與代價這兩個面向來同時考量。
因此,企業最先應該著手的項目,可以請開發人員或虛擬主機供應商,先做升級PHP 7的測試,才能了解需修改的幅度,以及評估所要的代價。由於升級的難度,將因程式碼複雜程度而有不同,加上可能影響到既有服務營運,這將會是企業所需面對的挑戰,是否有人力與資源進行升級。
這不像同個版本的小升級那樣容易,例如PHP 5.5升級PHP 5.6。畢竟,部分PHP 5語法在PHP 7環境的不相容,導致用戶再升級時,需要做出調整,舉例來說,已經廢棄的函式,需要使用其他函式替代,還有已經移除的舊式SAPI和模組,都要做出修改,才能在更新為PHP 7後,不影響網站運作。
其實,不少以網站為核心業務、流量大的PHP網站,企業本身的網站開發團隊較積極,可能都已經升級到PHP 7,但上述語法不相容的問題,還是成為了其他PHP網站的升級門檻。
尚未升級PHP的用戶,也可以搭配WAF方案增加自身的防護力
若要降低自身網站的風險,企業用戶的PHP網站在還沒升級前,現在可以如何因應呢?
以當前的局勢而言,即使停止PHP 5.6更新支援後,使用PHP 5.6的客戶仍將存在。從這次我們詢問臺灣虛擬主機供應商的過程,也瞭解到在他們的客戶中,至少有5至7成以上的客戶網站,仍然是使用PHP 5。
而就這些業者的因應方式來看,是會運用網站相關的資安解決方案,幫助客戶轉移安全風險。例如,他們會禁止一些與系統相關的PHP函式,畢竟他們的環境包含了每個客戶的網站,也要避免網站漏洞遭到攻擊,而可能導致其他受損的情況。
不僅如此,這些業者當中,有不少開始提供虛擬主機,搭配網頁應用程式防火牆WAF(Web Application Firewall)的方案,讓用戶有另一種較安全的選擇,以降低網站主機受攻擊的風險,當然,這也連帶減緩PHP漏洞的影響。
而對於自建網站主機的企業,這種方式就是一種替代的方案。當然,沒有錢有沒有錢的作法,像是用開源的ModSecurity來實作,也是相對可以增強防護的做法。
面對這次的網站安全與風險的問題,捕夢網數位科技技術長趙永弘指出,安全是相對的,他並以體質與衣服來比喻。若是本身體質就健康是最好的,就像是從PHP 5升級PHP 7,但如果體質不好也可多加衣服來避免感冒,就像是額外採取更多網站防護措施來降低風險。不過,體質還是最重要的部分,只是在沒辦法調體質時,就從外部來做。
對此,匯智資訊技術總監潘昆周也用風險轉嫁的概念來形容,每個版本都有風險,因此需要制定良善的資安防護機制,與定期檢核網站安全性,來提升網站安全性。假設PHP 7.2版突然有個重大CVE的漏洞,除了等官方釋出修補,安全層級要求高的單位,可能在WAF端就要先做條件的過濾,這也就是他所指的風險轉嫁。
此外,儘管近年PHP揭露的漏洞不算非常多,而就他的觀察,都是在集中在特定的CMS例如Wordpress、Joomla,因為這些工具很容易上手,建構網站容易,也是問題點。
再從不升級的現象來看,若是仔細探究下去,可能還有衍生的複雜問題存在。首先是,企業是否有人力或資源去升級,再者,網站主能否意識到這樣的問題,甚至不少企業本身是將網站委外設計,進而牽扯到各層面的影響,並讓用戶不升級的原因變得複雜。
網站委外的企業不升級原因較複雜,網站主與開發方需主動出擊
談到PHP用戶不升級的原因,在虛擬主機供應商眼中,網站升級的關鍵是在網頁設計公司,並不是客戶本身,也不是他們這樣的平臺服務商。
最主要的原因是,客戶可能根本不瞭解網站開發的問題。匯智資訊技術總監潘昆周表示,因為企業客戶通常只重視網站完成後的成果,以需求導向找設計師,因此,採用何種程式語言,還是要看設計師的喜好。例如,一間麵包店業者想要做網站,需求可能是要有購物車,並注重如何結帳,但對於要用PHP,或ASP.NET,或PHP哪一個版本,其實不是那麼瞭解,甚至沒有概念,自然也就不知道怎麼跟設計師討論。對於PHP版本這樣的議題,只有開發界比較多人討論。
而在他們的虛擬主機客戶中,主要分兩種:一種是網站已經設計完成從別地方要搬移過來,一種是剛要設計網站,他們可以提供企業與設計師煤合的幫助。若是企業想要升級PHP網站,而且內容如果需要大改,要看企業是否願意投入經費去進行,但若在網站建構之前企業來詢問,他們是可以與設計業者進行溝通。
還有一個挑戰,潘昆周認為是在設計師或客戶端,他們一開始安裝的作業系統環境中,原生提供的PHP是什麼版本,這也影響多數開發者,很可能會依著那個環境去做。
另一家業者也有同樣的看法,捕夢網數位科技技術長趙永弘表示,以他們的客戶而言,有9成網站都是交由外包網頁設計公司,企業本身有網站開發團隊的並不多,這些企業都是預算有限,不會自建機房,甚至接下來負責管理網站的人員,都是跟帳務有關的行政人員會計,並沒有IT背景與資安意識。
在設計端,就他們的觀察來看,很少有網頁設計公司用新的技術,原因是既有團隊已經建立了模版,能夠快速套用,穩定性也高,如果要維護不同版本,團隊的人力配置就會很吃緊。當然,但若是一些網站設計團隊都是專案方式進行,狀況就不同,但對於用戶而言,網站設計成本相對是可能較高。在現今網站設計非常普遍的情勢下,業主如果傾向於比價,問題也會難以解決,成為另一挑戰。
此外,還有後續維護與開發人員經常流動的問題。舉例來說,在網頁設計公司完成網站後,一般與客戶的網站維護內容可能只是改文字與改圖片,為了資安而改寫程式的需求,不在維護費用的範圍之內,也就是說企業需要額外付錢;還有其他狀況像是系統可能是前幾任工程師所寫,但因網頁設計領域的人力流動性高,新的工程師接手,可能看不懂之前舊的,認為可能要重寫。
但終究,這樣的問題或許又會回到用戶本身,是否意識到這樣的問題,才能做出改變。挑戰上,既有用戶需要評估是否願意再花錢去改變,或是採取可以因應的措施;而新用戶的概念則應該是,網頁設計非單次性的服務,應該是種長期的維護合約,維護內容也不應該限於簡單的修改。
還有一些安全的觀念必需能意識到,像是在網站上線後,仍需定期維護並進行資安掃描,若發生問題也應能與設計師溝通修補。不應該是遇到問題,找不到原有設計師,還要花一筆費用設計網站或是排除問題。
虛擬主機商將持續提供舊版環境,但用戶仍需面對版本升級的問題
面對PHP 5將停止支援,儘管虛擬主機商都認為客戶網站應該升級最新版,這也會減少他們管理虛擬主機的麻煩,只是客戶對於舊版環境的需求仍然龐大,因此,明年他們其實仍將持續提供相應的服務。
但是,也有網站開發團隊曾經提出不同想法,他們認為網站是否必須改用新版,取決於虛擬主機商是否持續提供舊版本的環境。不過,這種雞生蛋、蛋生雞的問題,對於企業升級新版的意願,其實也會帶來某種程度上的干擾。最好的自保之道,還是要放在用戶自身對於安全的重視。
反觀採用虛擬主機的客戶,對於版本升級的觀念,通常取決於網站是否攸關企業的重要營運與收益。匯智資訊潘昆周指出,多數電商網站會主動關切升級與網站相關議題,但若是形象或是單頁式簡易網站,通常在建置完成後就無常態性營運,因此對於升級的觀念可能需要時間累積發酵。
提升網站安全不能光靠版本升級和WAF,應藉機爭取更多資源改善
對於這次PHP升級的議題,前面已經提到可採用WAF方案來因應,但是整體網站安全需要關注的問題可不只如此。舉例來說,像是WAF也有可能被繞過的問題存在,而在WAF方案之外,還有SSL憑證、資料庫防火牆(DAF),最好企業也要執行網站弱點掃描,或是定期每季的網站滲透測試的服務,以及原始碼掃描與DDoS的防範,這些都是進一步強化安全的作法。
此外,關於網站資料外洩的問題,更是網站主與消費者都很在意的問題,由於可能洩漏的管道相當多元,因此各個環節的風險都需要重視。
捕夢網趙永弘提到,現在許多電子商務網站,有些會貼出提醒民眾接到詐騙電話的警語,其實不少就被網站已經被入侵了。由於這些事件的發生,可能都不會主動通知客戶,導致問題無法被突顯與改善。
而匯智資訊潘昆周也指出,一旦發生個資外洩事件,應先釐清資料在哪一段被竊走,才能真正解決問題,像是非網路端的物流端,也可能是導致外洩的原因,因此資安檢核必須多面向的評估。
要知道,現代人對於網站安全的要求,已經越來越高,企業對於網站安全的不重視,都很有可能導致企業自身形象、品牌價值受損。
而隨著這次PHP 5的終止支援,僅管只剩一個月了,用戶也不用太過擔心無法即時因應,只要企業現在知道這樣的問題,並且開始進行準備,其實是可以趁著這次的機會,向公司提出資源來改善網站安全的種種問題。而每一種增加網站安全的作法,其實也都等於是減少被攻擊的機率。
三大網站內容管理系統需求皆建議採用PHP 7,其中,並以Drupal 8支援新版態度最積極
【為了安全,WordPress建議用PHP 7.2】市面上熱門的架站內容管理系統WordPress,現在已經將安裝的系統環境需求,建議為PHP 7.2版以上,最主要的原因,就是為了最佳安全性的考量所做出的建議。不過要注意的是,在11月23日,我們發現WordPress正體中文官方網站的安裝頁面並未更新,這可能導致國內用戶在資訊接收上有落差。圖片來源/Wordpress官方網站
對於PHP新版的支援,若從三大知名網站內容管理系統(CMS)專案來看。目前,Drupal 8已經宣布從明年3月6日起,最低支援需求是使用PHP 7,並建議採用7.1版。
不過,像是Joomla與Wordpress對PHP的態度則是相對寬鬆,例如,Joomla 3.x則建議為5.6或7版以上,支援下限為5.3.10。而Wordpress則建議 PHP 7.2版以上,最低為5.2.4版。
顯然,這三大網站內容管理系統的安裝需求建議,都已經是PHP 7版。
儘管,Joomla與Wordpress還沒有打算因此,將支援底線提升至PHP 7,但用戶還是必須要有自知之明,若明年仍使用PHP 5,未來舊版漏洞問題誰來解決?升級仍是較好的建議作法。
升級PHP 7時的3大注意事項
【PHP開發者升級前必看!】PHP 7是一個新的主要版本,效能提升是最大的改變,但也有語法不相容舊版的問題產生,成為既有用戶升級的重大門檻。因此,PHP開發團隊也在官方網站上,提供了向下相容性問題的詳細說明。
用戶要升級PHP 7是否有些小祕訣,或是更好的參考資訊。首先,PHP官網其實提供了向下相容性問題的列表,並附上詳細說明,此外,網路上,也有許多像是PHP 7 Compatibility Checker的工具,可以協助網站主進行評估。
其實,這樣的第三方工具檢查,並不會花太多時間,基本上,只要準備好相應的環境,程式檢查可能只要不到半小時就完成,就能快速檢查出,網站的程式是否出現不符合PHP7語法的地方。
提供網頁開發與電子商務服務的業者歐斯瑞(Astral web)表示,大多公司不會定期檢查更新伺服器,因此不少公司仍在使用舊的版本運作,並且有許多網站內的客製程式碼不一定符合PHP 7,若不先做調整,很有可能再更新為PHP 7時影響網站運作。
其次,對於升級過程,開發者可能遇到的問題與挑戰有那些?一些已經經歷升級的用戶與業者,也提供了相關建議參考。
在已經升級至PHP 7的用戶網站中,國內知名網路社群平臺痞客邦是一例。該公司研發中心總監林瑞男表示,在PHP 5升級到PHP 7,有一個最重要的問題點,就是不支援舊的MySQL系統函式,變成要使用MySQLi或PDO(PHP Data Object)),這是一般企業升級時,較容易遇到的問題。
在MySQL資料庫之外,林瑞男也提到,如果已使用PHP社群提供的擴充套件(Extension),也要注意是否跟進支援新版的問題,否則就要尋找替代方案。特別是較少人使用的擴充套件,風險相對較高。
其他還有像是一些函式或API不太一樣,需要一個個檢查,整體還是要看網站的複雜性。此外,如果開發者是使用PHP框架(Framework),例如像是近年熱門的Laravel,解決這些問題時更為簡便,因為只要升級Laravel,就等於做完PHP升級。
林瑞男也指出,他發現近期較多的風險,其實是出在PHP的延伸外掛模組(Extension)方面,用戶如果有用一些模組,風險也會相對較高。此外,除了PHP本身,還有PHP函式庫及CMS系統,也都可能會是漏洞攻擊者的目標。
最後,歐斯瑞公司對於PHP升級也提醒大家注意到下列改變,像是foreach的修改、字符串處理機制修改,以及移除的模組與SAPI(Server API)。
以PHP 7已移除的模組為例,包括ereg、mssql、mysql、sybase_ct;移除的SAPI則有15個,包括Aolserver、apache、apache_hooks、apache2filter、caudium、continuity、isapi、milter、nsapi、phttpd、pi3web、roxen、thttpd、tux、webjames。
總而言之,歐斯瑞公司建議,需要先檢查網站的程式碼,並記得將擴充功能同步升級,最重要的是,需要一個與正式網站相同架構的環境作為測試區。
熱門新聞
2024-12-08
2024-12-08
2024-12-08
2024-12-06
2024-11-29