SQL dotaz

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: SQL dotaz

Příspěvekod CZechBoY » 06 bře 2012 21:05

nechápu jak nemůžeš změnit tvar SQL když to nikde neošetřuješ co tam je..
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Reklama
ecaha
nováček
Příspěvky: 7
Registrován: březen 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: SQL dotaz

Příspěvekod ecaha » 06 bře 2012 22:21

Něco na způsob (bez záruky, neumím PHP):

Kód: Vybrat vše

$mysqli->query("CALL sp_ulozVysledky($sport, $domaci, $hoste)");


Je úplně jedno co se tam pokusí kdo dát za input, ta procedura na sql sletí, když se jí nepovede implicitní konverze na int ze stringu. (procka je zkompilovaná před tím než dostane parametry, takže ji vyvede z míry, když by měla běžet jinak)

Na SQL to vypadá nějak podobně (opět to asi není MySQL korektně)

Kód: Vybrat vše

CREATE PROCEDURE sp_ulozVysledky (@sport int, @domaci int, @hoste int)
AS
INSERT INTO vysledky VALUES (@sport, @domaci, @hoste)


A jsme u toho, použití parametrizovaných uložených procedur jako základní techniky obrany proti SQL injection. Nedá mi to - přečti si něco o sql injection a hlavně, jak se proti němu bránit. Přijde mně, že moc nevíš, která bije. Třeba takový pěkný odkaz zde: https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: SQL dotaz

Příspěvekod CZechBoY » 06 bře 2012 22:26

podle mě je SQL injection prostě možnost změnit strukturu SQL dotazu - prostě je myšlen jinak než to chtěl vývojář
takže když $sport bude mít hodnotu třeba ",,,," tak funkce vyhodí chybu
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

ecaha
nováček
Příspěvky: 7
Registrován: březen 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: SQL dotaz

Příspěvekod ecaha » 06 bře 2012 22:42

Ano, a tak to má být, vyhodí chybu, protože uživatel dělá něco co vývojář nezamýšlel. Pokud chybu nevyhodí, je to zatraceně špatně napsaná aplikace. Chybu chytím ošetřím a lidsky vrátím. (Nebavíme se tu o tom, že na inputboxu samozřejmě mám mít validátor a vyřeším to na klientovi bez postbacku na server, případně na serveru bez obtěžování databáze) bavíme se o tom jak vypadá aplikace odolná SQL injectionu.

Žádným způsobem nezměním však strukturu dotazu. Nedokážu za žádnou cenu přimět tu proceduru udělat něco jiného než má. Buď spadne, nebo uloží tři integery. Víc možností není. Čili nemohu splnit to co říká definice sql injection útoku - útočník dělá v db nezamýšlené věci.

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: SQL dotaz

Příspěvekod CZechBoY » 08 bře 2012 14:18

prostě u mě je změna SQL dotazu SQL injection, konec

co myslíš že udělá takový $neco="'); DROP TABLE users --"
pokud bude dotaz mít povoleno spuštění více jak jednoho příkazu tak máš po prdeli ;)
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Dotaz- bottleneck
    od vasson » 24 pro 2024 22:22 » v Rady s výběrem hw a sestavením PC
    2
    2233
    od Cleric Zobrazit poslední příspěvek
    25 pro 2024 11:47
  • Dotaz na výběr SSD disku
    od Jirka88 » 10 zář 2024 17:52 » v Rady s výběrem hw a sestavením PC
    3
    1931
    od Jirka88 Zobrazit poslední příspěvek
    12 zář 2024 19:44

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů