Programavimo kalbų saugumas
Perlmonksuose kilo diskusija apie tai kokia kalba yra saugesnė
– PHP ar Perl. Atsakymas bent jau mano nuomone yra vienareikšmis
(ne, atsakymas nėra Perlas) – saugumas priklauso ne nuo
kalbos, o nuo programuotojo. Galima rašyti nesaugias (lygiai taip kaip
ir saugias) web aplikacijas tiek su PHP, tiek su Perlu, tiek su C, tiek
su Pitonu ar Java. Aišku kaip sako amerikonai „the devil is in
the details“ – kai kurios kalbos saugumo prasme leidžia
užmerkti akis ir pasitikėti pačia kalba (kartais be reikalo), kai
kuriose pats turi pasirinkti kaip užtikrinsi saugumą.
PHP aplikacijas senais laikais buvo gana sudėtinga padaryti saugias
(register_globals=On
?), bet jau senokai ši situacija
pasikeitė. Kalba įgavo naujų saugumo galimybių, tik neaišku ar patys
programuotojai pasikeitė nuo tų laikų kai viskas buvo globalu. Vis dar
tenka matyti baisius Dreamweaver‘iu darytus skriptus su
globaliais kintamaisiais ir jokio parametrų tikrinimo. Perlas nuo senų
laikų irgi buvo gana nesaugus, ir vėlgi ne dėl pačios kalbos, o dėl
programuotojų neišmanymo. Perlo bendruomenė iki šiol griežia dantį ant
Matt’s Script Archive, kurio
programose skylių daugiau nei kodo eilučių. Kas blogiausia, daug žmonių
būtent mokėsi Perlo iš tokių kreivų skriptų, nepagalvodami apie saugumą.
Tiesa, Perlas gali ir pagelbėti programuojant saugias aplikacijas: tam
yra taint mode (-T
), CPAN yra gerų saugumui padedančių modulių, o Perlo
įpraiškos tokios lengvos (na… reliatyviai lengvos. bet jei
programuotojas negali suprasti paprasčiausių įpraiškų, ta ir negalima
sakyti, kad jis moka Perlą) naudoti, kad jomis labai paprasti išsivalyti
reikiamus duomenis.
Galvoje dabar sukasi mintis „Jei programuotojas
ignoruoja kalbos pateikiamus saugumo įrankius, tai kaltas
programuotojas, o ne kalba.“ Ir nesvarbu kuo jis
programuoja.