SQL dotaz
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: SQL dotaz
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
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: SQL dotaz
Něco na způsob (bez záruky, neumím PHP):
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ě)
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
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
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: SQL dotaz
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
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
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: SQL dotaz
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.
Žá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.
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: SQL dotaz
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
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
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
-
- 2
- 2233
-
od Cleric
Zobrazit poslední příspěvek
25 pro 2024 11:47
-
- 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ů