Viac ako 15 rokov stará karikatúra. Vtedy boli pripravené príkazy nové – aspoň pre open-source databázy ako MySQL a programovacie prostredia ako PHP. Dnes na to naozaj neexistuje žiadne ospravedlnenie.
...
Udivuje ma, že weboví vývojári dodnes nerozumejú osvedčeným postupom v tejto oblasti...
A bude to len horšie, pretože stále viac kódu sa abstrahuje do (zle napísaných, ale populárnych) rámcov, ktoré neustále robia veci hlúpo a nemáte ani potuchy, že sa to deje, kým niekto nespustí fuzzer na jednej z vašich stránok a nezistí, ako blízko je všetko rozbiť.
Zahŕňať odkazy XKCD, ktoré sa teraz objavujú v komentároch, tým, že ich zahrniete do článku?
Vzhľadom na tieto výsledky sa zdá, že reakciou na incident by malo byť toto opraviť a potom pracovať na jeho čo najrýchlejšom odstránení. Toto množstvo chýb SQL Injection poukazuje na zásadné problémy s tým, ako je celý tento systém zostavený.
Udivuje ma, že weboví vývojári dodnes nerozumejú osvedčeným postupom v tejto oblasti a používajú konštrukcie, ktoré vyžadujú viac zdrojov (z určovania cesty za behu), sú menej robustné a niektoré databázy znemožňujú optimalizáciu dopytov, pokiaľ (ako napríklad oracle) nenaznačíte, že váš SQL je hlúpy, čo je jednoducho hlúpe – ak dokážete ísť do tohto úsilia, môžete robiť správne plány a viaže.
História
MOVEit bol vydaný v roku 2002 spoločnosťou Standard Networks.[13] V roku 2006 spoločnosť uvoľnila integráciu medzi MOVEit a antivirusový softvér zastaviť prenos infikovaných súborov.[14]Ipswitch získal MOVEit v roku 2008, keď spoločnosť kúpila Standard Networks.[15] MOVEit Cloud bol ohlásený v roku 2012 ako a založené na cloudeprenos súboru softvér na správu.[16] MOVEit Cloud bol prvý cloud spravovaný softvér na prenos súborov podnikovej triedy. Je škálovateľný a môže zdieľať súbory medzi systémami, skupinami alebo osobami.[17]
V roku 2013 boli klienti MOVEit uvoľnení pre iOS a Android platformy. Vydanie obsahovalo sprievodcu konfiguráciou, ako aj e-mail šifrovanie.[1][18]
Ipswitch Analytics bol vydaný v roku 2015 na monitorovanie a vykazovanie údajov prostredníctvom softvéru MOVEit. Analytické údaje zahŕňajú monitor aktivity a automatické vytváranie správ. Ipswitch Analytics má prístup k údajom zo serverov na prenos súborov a automatizáciu MOVEit.[19][20] V tom istom roku bol vydaný Ipswitch Failover. Softvér sa môže vrátiť ciele bodov obnovy (RPO) v sekundách s cieľom doby zotavenia (RTO) menej ako minúta, čo zvyšuje dostupnosť MOVEit.[21]
Nie je to len webdevs. Pracoval som na programoch Java, ktoré používali StringBuffer/Builder, a programoch C, ktoré snprintf'd do polia s pevnou veľkosťou pre 95 % dopytov – s jedným alebo dvomi parametrizovanými dopytmi, ktoré rovnakých vývojárov. Niektorí ľudia sa zdajú byť mŕtvi pri vytváraní dopytov SQL striktne komplikovanejších, ako je potrebné.
Zahŕňať odkazy XKCD, ktoré sa teraz objavujú v komentároch, tým, že ich zahrniete do článku?
Problém začal, ako hovoríte, s PHP, ktoré aspoň spočiatku robilo všetky SQL príkazy inline a dynamicky. Vôbec som nedržal krok s PHP, predpokladám, že už dávno umožnili robiť veci správne.
Toto nie je chyba, ako niektorí hovoria, samotného SQL. Použil som databázy, ktoré vznikli v 70-tych rokoch minulého storočia, a vždy si vymieňali údaje s aplikáciami v hostiteľovi premenné alebo aspoň vyhradené dátové vyrovnávacie pamäte s pevnou veľkosťou (napríklad IMS, aj keď to nie je relačné). A niektoré DBMS, ako napríklad teraz starodávna DB2, majú samostatné povolenia, aby vôbec povolili akúkoľvek formu dynamického SQL (okrem cez pomocné programy ako DSNTEP2 a DSNTIAUL, aj keď som ich videl zneužiť vlastným spôsobom), čo by na vás DBA urobil šialeným pohybom, ak by ste sa o to pokúsili žiadosť.
Udivuje ma, že weboví vývojári dodnes nerozumejú osvedčeným postupom v tejto oblasti a používajú konštrukcie, ktoré vyžadujú viac zdrojov (z určovania cesty za behu), sú menej robustné a niektoré databázy znemožňujú optimalizáciu dopytov, pokiaľ (ako napríklad oracle) nenaznačíte, že váš SQL je hlúpy, čo je jednoducho hlúpe – ak dokážete ísť do tohto úsilia, môžete robiť správne plány a viaže.
A bude to len horšie, pretože stále viac kódu sa abstrahuje do (zle napísaných, ale populárnych) rámcov, ktoré neustále robia veci hlúpo a nemáte ani potuchy, že sa to deje, kým niekto nespustí fuzzer na jednej z vašich stránok a nezistí, ako blízko je všetko rozbiť.
... očividne sme už zaplátaní...
Schneider Electric ani Siemens Electric nie sú energetické spoločnosti. Obaja vyrábajú zariadenia používané energetickými spoločnosťami, ale to je len časť ich podnikania.
Inovácia produktu, ktorý patrí do kategórie 2, je časovo náročná a nákladná záležitosť, čo znamená, že k nej dochádza len vtedy, ak je spoločnosť donútená.
Schneider o sebe rád hovorí ako o „energetickej spoločnosti“, hoci nevyrábajú, nedistribuujú ani nepredávajú významné množstvá energie. (Najbližšie sú pravdepodobne ich UPS, APC).
Zahŕňať odkazy XKCD, ktoré sa teraz objavujú v komentároch, tým, že ich zahrniete do článku?
Kedysi som pracoval pre jednu z nespočetných spoločností, ktoré Schneider zhltol, ale naše podnikanie nemalo nič spoločné s energiou.
Toto nie je chyba, ako niektorí hovoria, samotného SQL. Použil som databázy, ktoré vznikli v 70-tych rokoch minulého storočia, a vždy si vymieňali údaje s aplikáciami v hostiteľovi premenné alebo aspoň vyhradené dátové vyrovnávacie pamäte s pevnou veľkosťou (napríklad IMS, aj keď to nie je relačné). A niektoré DBMS, ako napríklad teraz starodávna DB2, majú samostatné povolenia, aby vôbec povolili akúkoľvek formu dynamického SQL (okrem cez pomocné programy ako DSNTEP2 a DSNTIAUL, aj keď som ich videl zneužiť vlastným spôsobom), čo by na vás DBA urobil šialeným pohybom, ak by ste sa o to pokúsili žiadosť.
Udivuje ma, že weboví vývojári dodnes nerozumejú osvedčeným postupom v tejto oblasti a používajú konštrukcie, ktoré vyžadujú viac zdrojov (z určovania cesty za behu), sú menej robustné a niektoré databázy znemožňujú optimalizáciu dopytov, pokiaľ (ako napríklad oracle) nenaznačíte, že váš SQL je hlúpy, čo je jednoducho hlúpe – ak dokážete ísť do tohto úsilia, môžete robiť správne plány a viaže.
A bude to len horšie, pretože stále viac kódu sa abstrahuje do (zle napísaných, ale populárnych) rámcov, ktoré neustále robia veci hlúpo a nemáte ani potuchy, že sa to deje, kým niekto nespustí fuzzer na jednej z vašich stránok a nezistí, ako blízko je všetko rozbiť.
PHP 5 pridalo nový modul MySQLi (vylepšené MySQL), ktorý podporuje pripravené príkazy, PHP 5.5 zastaralo starý modul a od PHP 7 je starý modul MySQL preč.
Na druhej strane, používanie (dobrých) rámcov môže pomôcť vývojárom vyhnúť sa bežným nástrahám. Niečo ako rolovanie vlastnej aritmetickej logiky dátumu alebo kryptomeny - použite osvedčené, obľúbené riešenia. Ak zistíte, že aktívne bojujete proti tomu, čo od vás vyžaduje knižnica/rámec, prehodnoťte, čo robíte, pretože v najlepšom prípade je to neefektívne a v horšom prípade aktívne škodlivé.
A pre kontext PHP5 bolo dlho v zuboch (hoci sa bežne používalo) pred viac ako 10 rokmi. Neexistuje žiadne ospravedlnenie.
...študent, ktorého celé meno je „Robert“); DROP TABLE Študenti;--?“ (bez úvodzoviek).
Na druhej strane, používanie (dobrých) rámcov môže pomôcť vývojárom vyhnúť sa bežným nástrahám. Niečo ako rolovanie vlastnej aritmetickej logiky dátumu alebo kryptomeny - použite osvedčené, obľúbené riešenia. Ak zistíte, že aktívne bojujete proti tomu, čo od vás vyžaduje knižnica/rámec, prehodnoťte, čo robíte, pretože v najlepšom prípade je to neefektívne a v horšom prípade aktívne škodlivé.
Nazvime to SanitaryString. Namiesto bezpečného ukladania reťazca do pamäte, ako to robí SecureString, by to pomohlo presadzovať sanitárne postupy reťazcov tým, že povoľuje priradenia iba z reťazcových konštánt a iných SanitaryStringov.