相對於一般公司客戶較重視功能有沒有完成,公家機關的案子則是要通過弱點掃描後才能上線,筆者曾經手過幾次公家機關的案子,稍微跟大家分享一下心得,也許某些地方講的不完全正確,也請高手多多提點~
第一次是同事負責的案子,政府有提供VM環境,已安裝Windows Server和SQL Server,在上線前期,先送程式碼掃描,便有聽他抱怨過掃描後需要改一堆地方,當時他是使用ASP.NET Web Forms,並且是短期的案子,時間到後就會下線。弱點掃描則沒聽說有什麼問題,上線後交接給我負責,但即使有更新程式,也不用重新送掃,感覺似乎還好,一直到系統下線都相安無事。
第二次是我帶另一位新人同事負責的,屬於長期使用的系統,一樣佈署在政府VM內,使用Apache、PHP 7,開發完成後,並沒有像第一次進行程式碼掃描,上線後剛開始也沒有太大問題,問題在於之後,因為Apache是開源的,並且版本也會定期更新,殊不知弱點掃描也是定期進行。
過沒2個月,寄來了一封信,說明我們使用的Apache版本有已知弱點,需要在期限內完成升級,本來不是太在意,那我就升級吧,又過一陣子,同樣的信又出現了,這時我想糟了個糕,這件事情看來要在系統生命週期內都要做了,未來要小心這個坑…
第三次的案子,由於當時我的技能數都點在PHP,所以還是以該語言開發,但是Apache這個坑我不踩了,我特別改用內建的IIS,使用FastCGI來執行PHP,為了這個還特別研究原本.htaccess內的規則,要如何使用IIS的UrlRewiter實現,最後一切準備就緒,順利開發完成,也上線了。
心裡暗自竊喜,這次避開了伺服器環境的坑,真是太好了,沒多久寄來了一封信,使用的PHP版本有某某已知弱點,請更新到新版,瞬間覺得臉腫腫的,由於PHP更新的較慢,所以等到出新版後,才收到弱點掃描的通知,慢了一步啊~
總結這三次的經驗,什麼java或是PHP等其他非微軟的方案都不適合,因為合約內有一條,廠商有義務維持所有安裝軟體為最新版本,若額外安裝環境,都需要花費心力去維持新版。若是使用內建IIS可運行的微軟Framework來開發,可以完美規避掉弱點掃描這一題,因為環境由政府提供,補丁他們會打,版本他們會升,若無法升級,也是內部問題,跟廠商沒關係。
只能說當時我還沒點到ASP.NET MVC的技能樹,已盡量做出最好的選擇了。建議有接到政府專案,並且需要放置於他們VM內的開發者,最好使用微軟解決方案來開發,避免陷入無限升級的迴圈,萬一該版本已無更新,例如PHP 5.6,需要升大版號7的話,相容性又是另外一個議題了。
發表迴響