A co by si takemu cloveku poradil? Je tam zamestnany, copy&paste vie, architekturu, frameworky a programovaci jazyk nadiktovali, specifikaciu dostal tak pise. Ja to niekedy volam programming by accident, nejaka premenna, dame bodku ved to IDE nieco ukaze. Takto funguje minimalne 60% vo velkych firmach. Nic vynimocne. Ked ich vyhodia nebude mat kto robit.
Takze zadne velke firmy ? Zadne HP. AVAST, Microsoft, Red Hat, Barclays, nejaky operator ? Proste jen neurcite "pracujem primo pro klienty i dodavatelske firmy, jako kontraktor". Ty se typicky najimaji na jednu konkretni vec, kdyz nejsou zdroje. Takze jakou ze to mate zkusenost z prace ve velkych firmach ? Rekl bych ze nula.
IBM nieco ako kontraktorov pouziva. Problem je podla mna v peniazoch a case, nikto nebude cakat a platit pol roka cloveka len aby sa vzdelaval v bezpecnosti lebo projekt ma byt hotovy za 2 mesiace a financie su limitovane. Podla programov ktore som videl od HP, Avastu Red Hatu a Microsoftu myslim ze nemaju peniaze na vyvoj vobec.
Přesně tak lemplové a hujeři se totiž vyskytují všude. Nehledě na to že velká korporace není nic víc než jedna značka pod kterou je slepenec divizí, oddělení, úseků, týmů, projektů, poboček a zbytků pohlcených menších firem. Stav jedné kanceláře má pramalou vypovídací hodnotu o tom co se děje v sousedním baráku natož někde za oceánem.
Podle:
"Autoři dokumentu proto navrhují automatické testování bezpečnosti, které by mohlo zajistit například rozšíření do prohlížeče." a "Zajímavé také je, že drtivá většina zkopírovaných děravých ukázek pochází ze samotného dotazu."
Si říkám jestli není dneska náhodou apríl...
A proto je přísný zákaz používání šablon, maker, generátorů kódu. Jenom ten, kdo napsal každý řádek vlastnoručně v monolytu má možnost se zamotat do detailů a pro stromy nevidět les, že...
Btw, když kopíruju v kódu, tak to udělám tím způsobem, aby to kompilátor nepustil, dokud to nebude v cajku...
Už jen tím, že to kopírujete, je vaše pozornost oslabena, vždy tam bude více chyb. Jinak šablona, makro, generátor kódu není kopírování obsahu, ale funkcionality a ta funkcionalita musela být při tvorbě šablony, makra, generátoru verifikována a je obvykle pevně zasazena do kontextu pomocí parametrů.
Proto kopíruju jenom to, co se verifikuje samo. Třeba v C stejnou funkcionalitu pro různý typy dat. Kompilátor řve, když někde nezměním typ.
Pokud víš, jak jinak na to, dej vědět. Makra neberu (problémy s laděním, nepřehledný), generátor kvůli opakování 20 řádků pro tři typy není efektivní, šablony C nepodporuje.
z praxe mohu říct, že je naprostý šumák, jestli daný programátor kód okopíruje nebo ho napíše sám, kvalita bude stejná, jen kopírování je rychlejší.
Od toho tady máme CR, QA atd, Každej senior musel být někdy juniorem, existují samozřemě vyjímky, kteří první kód napsali až po několika letech teoretické přípravy, zatím jsem ale nikoho takového nepotkal.
To je sice hruzostrasna predstava, ale podle me se to prakticky nelisi od toho, kdyz pouziju nejakou knihovnu, kterou si dukladne neprostuduju(a to uz je podle me pripad 99.99% programatoru). Oliznout z SO, nebo sliznout z mvnrepository je z hlediska bezpecnosti prakticky to same. A navic ten kod z SO pravdepodobne projelo vic oci, tak se treba v komentari doctu, proc je to pitomost.
Stack overflow je mnohdy poslední záchrana, když po pěti hodinách nedokážete rozchodit jednoduchou věc.
Ono totiž proprietární řešení (např.: MSSQL) nemají vůbec žádnou logiku. To co by jste jinde (MySQL,...) udělali jedním příkazem, tak v M$ rozhodně nefunguje. Ve VBA například jedním příkazem pošlete email, ale přetypovat datový typ range to string je celkem slušná magie.
Takže radši vezmu něco co funguje, než přemýšlet nad bezpečnostním rizikem kódu, který stejně poběží na platformě, která je děravá až až...
To je právě ten problém. Člověk tam najde kus kódu, nastuduje si co to dělá, ověří dokumentaci a pak teprve to použije. A pak za pár dnů přiběhne kluk z QA, že si snad dělám prdel, že ABC přeci nemůžu použít, když aplikace namá nastaveno XY a ani není kompilována s KLF.
Teď se nebavíme o věcech typu "zjistit IP adresu podle MAC", ale o zabezpečené komunikaci. Chápat, co právě daný kus kódu dělá, tam nestačí. Musíte znát celou knihovnu a její nastavení. Koukněte se na ty příklady z článku. U řady z nich není chyba v tom samotném kódu, ale v kontextu, v jakém je použit.
Můj příklad z minulého týdne: zkopíroval jsem kus kódu pro bezpečné ověření přihlašovacích údajů. Fungoval dobře a zcela jsem rozumněl tomu, co dělá. Pak jsem si ale najednou všiml, že přihlášení projde, i když zadám špatně heslo. Po hodiných hledání jsem se zeptal kluků z DBA a odpověď byla: ta služba je nastavena tak, že při přihlašování z localhostu nekontroluje hesla. No tak šel celý kus kódu s loopbackem do stoupy. Mne prostě nenapadlo, že i když se databázový server ptá na heslo, tak že ho u spojení z konzole neověřuje. A DBA se mi smáli, že to přece ví každý.
Tomu rozumím.
Nechtěl jsem se rozepisovat. Nejen, že si zjistím, co to dělá a upravím si to podle toho jak potřebuji i v kontextu aplikace a knihoven. Pokud dělám něco po někom, tak raději zkoumám kontext a ptám se, než abych udělal blbost. Každopádně neříkám, že se nemůže stát chyba. To co jste zmiňoval jako příklad. Ano, „opravdu to ví každý“, ale v době, kdy bych to psal bych si nevzpomněl. Určitě bych si vzpomněl až po tom, co by mi to autorizovalo špatné heslo :-(
Ono třeba u TLS je další problém v tom že co je best practice před 2 roky je dneska brané jako zranitelné a z komentářů to nemusí být patrné - dobře hodnocené odpovědi žijí dlouho. IMHO Obecně problém u bezpečnostních otázek je že většina vývojářů na ně odpoví špatně a jen menšina ví jaké jsou aktuální best practices....proto tam palce nahoru a dolů příliš nefungují
Jj, třeba AES-CBC v TLS považují za "insecure", ale jednak pro legacy aplikace je to relativně OK (a nevíme, jak staré aplikace hodnotili). AES-CBC implementace v TLS netrpí na padding oracle a BEAST je prakticky nepoužitelný.
Co je zvláštní, tak mají AES-CBC v tabulce 2 insecure u TLS a na obou stranách v tabulce 3 o symetrických šifrách, přitom je mnohem pravděpodobnější, že někdo při použití AES-CBC mimo TLS vyrobí padding oracle (a ne naopak).
slightly OT: kopirovanie z webstranok priamo do terminalu moze byt este diabolskejsie https://thejh.net/misc/website-terminal-copy-paste
buahaha
Bezpečnostní chyba je už celá koncepce kapitalismu, která podporuje perpetuální triky typu: udělám chyby v kodu -> zenužiju chyby v kodu -> budu každého trolit o chybách v kodu -> udělám o tom přednášky ->napíšu knihu -> hlavně se budu obloukem vyhýbat jakémukoli řešení, pokud by se nějaké našlo, tak to zatrhnou naši sledovatelé a hlídači, protože by ztratili kontrolu.
Bezpečnostní chyba je komunismus:
1) Všichni budou pracovat bez individuální odměny na jednu hromadu, kterou si pak všichni rozeberou dle potřeby.
2) Jedinou pozitivní motivací k tomu, aby někdo přispěl na hromadu, je jeho dobrý pocit, který vydrží do chvíle, než zjistí, že 99,999%toho, co vytvořil, si vezmou ti, kdo nic na společnou hromadu nepřidali.
3) Hromada se smrskne pod kritickou úroveň. Dav je třeba motivovat k práci. Pozitivní motivace je proti ideologii, dáme to jako povinnost (negativní motivace trestem)
4) Prací některých se stane kontrola ostatních. Rozdělují práci, rozhodují o trestu.
5) Dozorčí vrstva má moc, ale ne zodpovědnost (sami jenom berou a na hromadě je tím víc, čím víc ždímají ty pod sebou), takže nepodpoří nic, co by nižší vrstvě ulevilo, nebo ji motivovalo k lepším výsledkům.
6) Dolní vrstva vzdá jakoukoliv iniciativu, protože prioritu je splnění stupňujících se požadavků a cokoliv navíc vládnoucí vrstva vezme jako samozřejmost, tak proč se namáhat.
7) Změna ve společnosti by znamenala, že dozorci přijdou o privilegia, ty si chtějí udržet i za cenu násilí a represí.
8) Kontrola a potlačení rebelie je jednodušší, když se vyšší vrstva společnosti dostane k datům o nižší vrstvě, tj. podpora bezpečnostních děr.
9) Jakákoliv aktivita se stejně bude dít ve volným čase, ale bez to, že by z toho měla prospěch společnost - melouchy, domácí kutění,...
10) V rámci plánování velikosti hromádky se udělá centrální plán. Nároky jsou extra vysoký, všichni chtějí brát. Musí se to flinkat, aby bylo aspoň něco.
A teď popravdě, jak tenhle systém zajistí, že se dostane odborník na pravý místo, jak ho motivuje k tomu, aby se rozvíjel po profesní stránce,... ?
Ne, vždycky to děláme pro sebe a svou rodinu.
Komunismus: Člověk má jistou práci, ale nejistou svobodu. Udělá přesně to, co se po něm chce, aby ho nezlikvidovali a nic navíc - příště by to byl standard a chtěli by to po všech. Nemá důvod si rozšiřovat kvalifikaci a makat na sobě, budovat si image v oboru, protože práci má jistou a všude by stejně pracoval za stejnou, centrálně určenou, odměnu. Když chce něco navíc, tak načerno formou melouchu (nezdaněný, společnost z toho nemá nic).
Kapitalismus: Člověk nemá jistou práci, ale má jistou svobodu. Udělá, co se po něm chce, aby se uživil a po dohodě s vedoucím si může přivydělat, ať už zlepšovákem, nebo přesčasem. Má motivaci být dobrý - ti dobří si můžou diktovat větší odměny. Pokud mění zaměstnavatele, potřebuje co nejlepší image, aby prokázal, že si tu odměnu zaslouží. Image si může vybudovat klidně prací na OSS nebo publikací. A do toho se počítá i to zmíněný "vydání knihy o chybách" - on má informace, někdo jiný je ochotný za ně koupí knihy zaplatit. Není problém to udělat legálně - společnost z toho má daně, on finanční odměnu a lepší image, kupec knihy zase informace, který by jinde těžko sháněl. Výhodný pro všechny.
Chápu, že pro podprůměrný prosťáčky je lepší, když mu šéf řekne, že a osm hodin bude tahle hromada písku támhle a k uspokojení mu stačí, že soused si nevydělá víc, než on. Hlavně, že se nemusí nic učit, že se nemusí o nic starat,... Stačí držet hubu, aby nemusel kopat uran, a je to v cajku.
Nikoli. Myšlenka komunismu (tak, jak ho popsal Marx) je taková, že každý dělá co nejvíc, protože tím umožní co nejvíc přispívat na tu hromadu, která je pak dost velká pro něj, pro jeho blízké i pro všechny ostatní, a to vědomí je mu dostatečnou odměnou. Zároveň si z hromady každý vezme jen to, co potřebuje, protože nemá důvod brát si víc.
Copavoto, myšlenka to je dobrá, má jen jednu mušku: nebere v potaz, že lidi takhle nikdy myslet nebudou.
Hlavně si myslím, že účel těch diskuzí obecně je člověka nakopnout správným směrem nikoliv mu dodat kompletní řešení.
Takže odpovědi jsou obvykle koncipované stylem "asi nějak takhle". Pokud to někdo copypastuje do kódu bez revize, tak je to smutné. Svět je ovšem zahlcen kopíráky a "něco jsem tam zmačknul podle Youtube a funguje to"