Nejhorší těžko říct (obvykle se podařilo škody nějak napravit nebo nebyly velké), ale pár veselých historek mám… Některé jsou už poněkud staré (snad všechny ze studentských let) a byly mi zdrojem poučení…
Dělal jsem takový poloautomatický import dat z doc do DB. Data byla celkem pravidelně nastrukturovaná (nic extra složitého), ale občas byla nějaká výjimka, psal to člověk, znáte to… Hledal jsem nějaké špatně importované záznamy. Byl jsem v konzoli. Byl jsem líný napsat dotaz od nuly, tak jsem si řekl, že si to „select * from tabulka where “ vyberu z historie. Učinil jsem tedy tak, dopsal správnou podmínku, stiskl enter, a … a zjistil jsem, že to nebylo „select *“, ale „delete“. Lenoši se nejvíc nadřou…
Otevřel jsem si vedle sebe produkční DB a testovací DB, importoval data (nějaké články apod., nic extrémně citlivého) do testovací DB. V testovací DB jsem pak zkoušel „pocuchat“ jeden článek a zkoumat, jak si s tím DB poradí. V testovacím prostředí se ale nic neměnilo…
V jednom předmětě, který se netýkal bezpečnosti, jsem zkoušel SQL injekci na webovou aplikaci, kterou jsme k tomu měli. Nenapadlo mě nic chytřejšího než zakomentoval zbytek SQL dotazu… jenže to byl UPDATE a já zakomentoval WHERE. Následně jsem se vyučujícím omluvil, popsal problém a prošlo to bez postihu. Od té doby mám ale větší respekt z testování na ostrých datech a ostrých serverech.
Na QubesOS je u některých druhů virtuálních strojů (template-based VMs) potřeba přebindovat některé adresáře (např. /var/lib/mysql) do /rw, jinak data nezůstanou po restartu. Tehdy na to ještě nebyl speciální mechanismus, tak jsem měl nějaký skript spouštěný při bootu, něco ve stylu rm -r /var/lib/mysql && mkdir /var/lib/mysql && mount --bind /rw/mysql /var/lib/mysql && systemctl start mysql. Fungovalo to krásně, ale jednou jsem ten skript upravoval a nenapadlo mě nic lepšího než ho spustit celý znovu… Od té doby se snažím mít podobné skripty pokud možno idempotentní, nebo aspoň ne tak destruktivní v neobvyklých situacích…