Alapvetően azt gondolom hogy rengeteg olyan webfejlesztő dolgozik ebben a világban, aki csak arra a kódra esküszik, amit ő írt saját kezűleg. Bevallom, régen én is ebbe a csoportba tartoztam. Ez alatt pontosan azt értem, hogy ha egy egyszerű blogot kellett létrehozni, akkor inkább leprogramoztam, minthogy feltelepítsek egy akkor már létező, és sokkal fejlettebb blogmotort. Bennem volt a félsz, hogy annak bárki láthatja a forráskódját, így sokkal könnyebben feltörhető, mint a saját fejelsztésű cuccom.
Aztán az évek és a tapasztalat teljesen átformálta a véleményemet. Etikus hackerként látom azt, hogy egyedi fejlesztések során mennyire egyszerű hibázni. És persze azt is megtanultam, hogy a forráskód zártsága alapvetően nem garancia semmire…
Egyedi fejlesztések helye a nagyvilágban
Természetesen az egyedi fejlesztéseknek is van helye a webes világban. Sőt, mondhatnám kiemelt helyet kap, és az egyedi rendszerek fejlesztői nagyobb pénzt is akaszthatnak, mint az, aki mondjuk WP oldalak összepakolására teszi fel az éveit. De persze nem feltétlenül jár az egyedi fejlesztés több pénzzel és dicsőséggel. Ha ugyanúgy egyszerű(bb) céges oldalakat pakolsz össze, kötöd össze hírlevélküldővel, analytics-szel, akármivel, akkor simán elképzelhető, hogy a WP-vel kattingató konkurenciád több pénzt visz haza, egyszerűen azért, mert 10 siteot összerak, amíg Te csak egyet. És az a 10 site jól bevállt, kipróbált eszközökből áll. Te pedig újra és újra feltalálod a kereket, finomítgatod a rendszeredet.
Nem attól leszel menő webes, ha olyan dolgokat raksz össze, amit WP-vel is meg lehetne oldani. Az egyedi rendszer oda való, ahova a WP már kevés. Ahova olyan funkcionalitáshalmazt kell tenni, hogy értelmetlen lenne egy nyílt forráskódú rendszerre alapozni a dolgokat. Ennek ellenére azt látom, hogy megújulnak weboldalak a neten, egyedi fejlesztéssel, mert a „WP nem lett volna alkalmas rá”. És mit látsz rajta? Blogot, címkefelhőt, keresést, stb. Hát ezért igazán kár volt az ügyfél pénzét pazarolni. Főleg ha hozzávesszük azt is, hogy ezek a kódok általában olyan lukasak, mint az ementáli.
Oké, fejlessz egyedi rendszereket! Legyél tökös, de akkor ne vállalj el olyan munkákat, amihez tök felesleges az egyedi fejlesztés.
Mi a helyzet a biztonsággal?
Alapvetően kétféle webes támadás van: az általános, mikor pl. WordPress oldalak millióit támadják, abban bízva (jogosan), hogy biztons lesz benne pár olyan, ami nincs frissítve / nincs karbantartva, és egy ismert sérülékenységet kihasználva tömegesen lehet vírus bejuttatni ezekre a siteokra. Ez szokta még a kisebb problémát okozni, mert spammelnek, esetleg más oldalakat támadnak tőled, de igazából nem az adataidra kíváncsiak.
A másik típus a célzott támadás. Amikor nem érdekel hogy hány hasonló weboldal elérhető a világhálón, mert én TÉGED, CSAK TÉGED akarlak feltörni. Mert kellenek az adataid. Mert valamilyen szolgáltatásodért nem akarok fizetni. Mert van egy ügyfeled akit fel akarok törni, és rajtad keresztül vezet az utam…
Könnyen belátható, hogy az első típus, az általános támadás kevésbé veszélyezteti az egyedi oldalakat. Bár tök jól automatizálható tesztek vannak, így nem tartom kizártnak, hogy előbb-utóbb megjelennek azok a malware-ek, amelyek az egyedi fejlesztésű oldalalakt veszik majd célpontba… A második típus a célzott támadás az egyedi rendszerek hatalmas problémája! Ezeket a rendszereket ugyanis nagyjából sosem auditálják biztonsági szempontból, így elég jó eséllyel lehet fogást találni rajtuk.
Az Egy hacker naplója Facebook oldalon is volt régebben pár figura, aki a WordPress-es cikkek után mindig azt hajtogatta, hogy nem használja az a feltörhető sz*rt, és sokkal biztonságosabb az, amit Ő ír. Volt hogy felkínáltam, hogy szívesen átnézem az oldalt, és ha nem találok semmilyen biztonsági rést rajta, akkor egy fillért sem kell fizetnie, sőt egekig fogom magasztalni. Valahogy senki nem ugrott rá erre a lehetőségre… Fura…
Ezért is hívtam életre a 2017-es Hackerek Éjszakája akciómat. Szeretném bebizonyítani, hogy az egyedi fejlesztések világa sem fenékig tejfel. Hiába a Laravel, Symfony, CodeIgniter, ha a fejlesztő közben hibákat vét. De legyen igazatok, és a hiper-szuper frameworkökkel írjatok olyan oldalakat, amelyek atom stabilak!
Egy dolgot nem értek…
Hol vannak az ilyen lehetőségnél azok a fejlesztők, akik a saját kódjuk biztonságosságát hangoztatják?
Miért tűnnek el, amikor valaki megnézné az rendszerüket biztonsági szempontból? Mert ciki ha van benne hiba? Ugyan! EZ NEM CIKI! Fejlesztő vagy, nem hacker. Más fejjel gondolkozol. Amikor a saját kódjaimat auditálom, előfordul, hogy találok benne hibát. Pedig próbálok fejlesztés közben hacker fejjel is gondolkodni. De ez nem egyszerű. Le kell ellenőrizni az elkészült szoftvert, ilyen egyszerű. Ugyanakkor számodra még marketing értéke is lehetne:
- Ha találok hibát: javítottad, és tanultál az esetből. Mindenki látja hogy jó arc vagy, figyelsz a biztonságra, nem kockáztatsz. Hány webfejlesztő tudja ezt elmondani magáról? (hitelesen…)
- Ha nem találok hibát, még nagyobb király vagy! Alapból szuper kódokat írsz, de átnézeted egy etikus hackerrel is. Mekkora királyság! Fontos rendszert biztos tőled rendelnék, még ha drágább is vagy mint az átlag!
Főleg úgy, hogy az egész művelet mehet inkognítóban. Ha nem akarod hogy bárki is megtudjon bármit az eredményekről – semmi gond. Titokban marad.
Ha még nem tetted, olvasd el ezt a felhívást!
Még van hely, jelentkezz!
Én ezért (is) kezdtem áttérni inkább OpenSource megoldásokra, mert tisztában vagyok vele, hogy security szempontból nincs meg minden tudásom, amire szükség lenne, hogy egy tökös rendszert összerakjak. Sajnos megfelelő forrásra sem akadtam, ahol minden igényt kielégítően leírnák, hogy mire kell figyelni fejlesztés során. Azt már minden második oldalon megtalálom, hogy prepared queryket használjak, és minden inputot/outputot szűrjek, de megbízható megoldást erre nem igazán találtam. Szóval nagy szükség lenne egy megfelelő oktatóanyagra, amiből megtanulhatjuk, hogy hogyan írjunk biztonságos kódot.
De jó, hogy leírtad, köszi! Ez tök sokszor felmerül az ügyfeleknél, hogy nem lenne-e jobb egy egyedi… főleg akkor, ha már van tapasztalat wp-vel, és azt látják, hogy néha nem úgy viselkedik, nem úgy működik, nem azt csinálja, amit kellene neki… (persze, az mellékes, hogy frissíteni nem szokás…)
És akkor azt gondolják, hogy talán egy egyedi rendszerrel nincs ilyen probléma, nem lesz vele ennyi nyűg. Na persze…