Farmakoloji ve halk sağlığı tarihinde ibretlik bir "ilaç yasaklama" travması vardır.

Geçmişte hekimlerin ve hastaların yıllarca güvenle kullandığı, ağrıyı bıçak gibi kesen popüler bir ilaç (örneğin Vioxx / Rofekoksib veya eski nesil bazı iştah kesiciler) düşünün. Yıllar sonra yapılan geniş çaplı klinik çalışmalarda bu ilacın sessizce kalp krizlerini tetiklediği, binlerce insanın ölümüne yol açtığı kanıtlanır. Dünya Sağlık Örgütü ve Sağlık Bakanlığı bir gece yarısı genelgesiyle ilacın ruhsatını iptal eder, tüm eczanelerden toplatır ve kullanımını yasaklar.

Ertesi sabah yetmiş yaşında bir teyze polikliniğe gelir. Masaya yumruğunu vurur:
"Evladım ben on beş yıldır bu ilacı içiyorum, dizimin ağrısını bir tek bu kesiyordu! Eczacı vermedi, illa bana bu hapı yazacaksın!"

Hekim teyzeye ilacın kalbi durdurduğunu, ölümcül olduğunu bilimsel grafiklerle anlatmaya çalışır; ama nafiledir. Teyzenin hafızasında tek bir gerçek vardır: "Ben dün bunu içtim ve iyiydim; o halde yasaklayanlar suçludur!"

Alışkanlığın konforu, insanı kendi sağlığını tehdit eden ölümcül bir zehre bile körü körüne bağımlı kılabilir.

Web hosting dünyasında, yazılım ekosistemlerinde ve sistem yöneticiliğinde de her birkaç yılda bir tekrarlanan, teknik destek masalarını yangın yerine çeviren meşhur bir toplumsal kriz vardır: Hosting Firmasının Eski PHP Sürümlerini Kapatması ve Sabah Fatal Error ile Uyanan On Yıllık Sitelerin İsyanı.


2012 Yılında Donup Kalan Bir Dijital Fosille Yaşamak

Türkiye'deki paylaşımlı hosting sunucularında barınan web sitelerinin önemli bir kısmı birer "dijital fosil"dir.

2012 yılında bir üniversite öğrencisine veya yerel bir web tasarımcısına 500 liraya yaptırılmış bir kurumsal web sitesi düşünün:

  • PHP 5.3 veya PHP 5.6 ile yazılmıştır.
  • Veritabanına bağlanmak için milattan önce terk edilmiş olan mysql_connect() fonksiyonunu kullanmaktadır.
  • Karakter kodlamasında Türkçe karakterleri tutabilmek için ilkel iconv taklaları atılmıştır.
  • Güvenlik açıklarıyla dolu eski bir jQuery kütüphanesine yaslanmıştır.

Site yapılmış, şirketin sunucusuna yüklenmiş ve o günden sonra tek bir satır koduna bile dokunulmamıştır!

On yıl boyunca şirket sahibi her sabah tarayıcısını açmış, sitesine bakmış, "Oh ne güzel çalışıyor" demiştir. Şirket sahibinin gözünde yazılım; tıpkı ofisteki tahta masa veya çelik kasa gibi bir kez satın alınan ve ömür boyu bakım gerektirmeyen statik bir mobilyadır.

Oysa internet durağan bir müze değildir; saniyede binlerce yeni siber saldırı tekniğinin türediği canlı, vahşi bir organizmadır.


PHP Topluluğunun İdam Kararı: End of Life (EOL)

PHP geliştirici topluluğu (The PHP Group) her sürüm için katı bir yaşam döngüsü uygular:

  • Bir PHP sürümü çıkar (Örn: PHP 8.1).
  • İki yıl boyunca aktif geliştirme desteği alır.
  • Bir yıl boyunca kritik güvenlik yamaları (Security fixes) alır.
  • Üçüncü yılın sonunda ise resmi olarak "End of Life" (Ömrün Sonu - EOL) ilan edilir ve mezara gömülür.

PHP 5.6'nın resmi güvenliği 31 Aralık 2018'de bitti!
PHP 7.2'nin güvenliği 30 Kasım 2020'de bitti!
PHP 7.4'ün güvenliği bile 28 Kasım 2022'de tarihe karıştı!

Bu ne demektir?
Bu eski sürümlerde keşfedilen uzaktan kod çalıştırma (RCE), bellek taşması ve SQL enjeksiyonu açıklarına artık dünyada tek bir yama bile yazılmamaktadır!

Bir sunucuda PHP 5.6 çalıştırmak; kapısında güvenlik görevlisi olmayan bir banka şubesinin kasasını sokak ortasında açık bırakmakla aynı şeydir. Sunucudaki tek bir açık yüzünden o sunucudaki binlerce masum müşterinin verisi fidye yazılımlarına yem olabilir.


Gece Yarısı Gelen Sessiz Neşter

Hosting firmasının güvenlik ve sistem ekibi toplanır. Uluslararası standartlar (ISO 27001, PCI-DSS) ve sunucu güvenliği artık alarm vermektedir.
Sistem mühendisleri haftalar öncesinden müşterilere e-postalar atar:
"Sayın müşterilerimiz, sunucumuzdaki PHP 5.6 ve 7.x sürümleri 20 Nisan gecesi güvenlik gerekçesiyle kapatılacak ve sunucu varsayılanı modern PHP 8.2'ye yükseltilecektir. Lütfen yazılımlarınızı güncelleyiniz."

Tabii ki müşterilerin %90'ı o e-postayı okumaz bile; "reklamdır" deyip çöpe atar.

Ve o perşembe gecesi saat 02:00'de sistemci terminale girer:
Sunucu genelindeki PHP yöneticisi (cPanel MultiPHP veya CloudLinux alt yapısı) güncellenir. Eski kütüphaneler derlenmekten çıkarılır.


Sabah Gelen Kıyamet: Fatal Error Tiyatrosu

Cuma sabahı saat 09:00.
On yıldır sitesine tek bir çivi çakmayan patron ofisine gelir. Kahvesini alır, gururla şirketinin web sitesine girmek ister: enter.

Ve ekranda bembeyaz bir sayfa ve üzerinde kırmızı harflerle yazılmış o tarihi ölüm fermanı belirir:
Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /home/site/public_html/baglanti.php:12
Stack trace: #0 {main} thrown in /home/site/public_html/baglanti.php on line 12

Patronun tansiyonu fırlar. Telefon ahizesi yerinden sökülür, hosting firmasının destek hattına ve bilet sistemine bir küfür ve tehdit fırtınası iner:

"Siz benim ekmeğimle mi oynuyorsunuz?! Dün akşam saat altıda canavar gibi çalışan sitemi gece girip bilerek bozmuşsunuz! Hemen o yaptığınız ayarı geri alın, sitemi eski haline getirin yoksa avukatımı gönderiyorum!"

Destek masasındaki genç mühendis sabırla izah etmeye çalışır:
"Beyefendi, sitenizdeki kod 12 yıl öncesine ait. Kullandığınız mysql_connect fonksiyonu 2015 yılında PHP'den tamamen kaldırıldı. Güvenlik açıkları nedeniyle sunucumuz PHP 8'e geçirildi. Yazılımcınıza söyleyin, kodları PDO veya MySQLi kütüphanesine güncellesin."

Patronun yanıtı Türk internetinin özeti gibidir:
"Yazılımcı kim kardeşim? O çocuk 10 yıl önce askere gitti, numarası bile yok bende! Ben koddan anlamam, dille mille uğraşamam! Dün çalışan şeyi siz bozdunuz, siz düzelteceksiniz!"


Teknik Borcun Kaçınılmaz Haczi

Finans dünyasında bir borcu ödemezseniz faiz biner ve bir gün kapınıza haciz memuru gelir.
Yazılım dünyasında da güncellemeleri yapmayıp kenara çekilmenin adına "Teknik Borç" (Technical Debt) denir.

Siz on yıl boyunca:

  • "Aman çalışıyor işte kurcalama" dediniz,
  • Yazılımcıya bütçe ayırmadınız,
  • Kodlarınızı PHP 7'ye, ardından PHP 8'e modernize etmediniz,
  • Kütüphanelerinizi yenilemediniz.

Bedavaya yaşadığınızı zannettiniz.
Oysa siz sadece borcu ertelediniz.
Ve o gece yarısı gelen PHP güncellemesi; o on yıldır biriktirdiğiniz tüm teknik borcun faiziyle birlikte kapınıza dayandığı o kaçınılmaz haciz anıdır!


Yaşayan Bir Yazılım Kültürü

Bir web sitesi sahibi olan herkes şu acı gerçeği kabullenmek zorundadır:

  • Kodlar Eskir: Tıpkı bir arabanın motor yağının veya lastiklerinin eskimesi gibi, yazılmış her kod satırı zamanla eskir, paslanır ve güvenliğini kaybeder.
  • Hosting Sunucusu Müze Değildir: Hiçbir hosting firması, sizin 10 yıllık eski kırık kodunuz çalışsın diye tüm sunucuyu hackerların açık hedefi haline getirecek eski PHP sürümlerini sonsuza kadar açık tutamaz.
  • Bakım Bütçesi Şarttır: Bir web projesi yayına alındığı gün bitmez; o gün doğar. Yıllık bütçenize mutlaka "yazılım bakım ve kütüphane modernizasyon" kalemi koymak zorundasınız.

Tıpta kalbi durduran yasaklı ilacı teyzeye vermeyen hekim teyzenin hayatını kurtarıyordur.

Hosting firması da eski PHP sürümlerini kapatırken aslında sizin veritabanınızı hackerların elinden kurtarıyordur.

Suçu güncellemeyi yapan sunucuya atmayı bırakın. Kodunuzu çağa uydurun; çünkü teknoloji, geride kalanların gözyaşlarına asla bakmaz.