[ Príspevkov: 29 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
ochrana pred sql injection

Registrovaný: 20.03.08
Prihlásený: 08.03.17
Príspevky: 596
Témy: 149 | 149
Bydlisko: Houston, Texas
Vek: 24
NapísalOffline : 06.12.2008 9:14 | ochrana pred sql injection

ako mam ochrániť moju stránku pred sql injectami

teda mam adresu napr nieco.sk/clanok.php?id=2

ale keď tam dám nieco.sk/clanok.php?id=2 or 1=1 tak sa mi zobrazia všetky články

tak ako to teda opraviť?


Offline

Užívateľ
Užívateľ
ochrana pred sql injection

Registrovaný: 04.04.08
Prihlásený: 27.02.12
Príspevky: 532
Témy: 27 | 27
Bydlisko: Nitra
NapísalOffline : 06.12.2008 10:05 | ochrana pred sql injection

Napr. ak máš iba ID článku (clanok.php?id=1), tak to môžeš ošetriť napr. takto:
Kód:
$id = intval($_GET["ID"])


Prípadne to ešte môžeš prehnať funkciou od stenleyho (safety() - nájdeš to v Často používaných skriptoch)


_________________
V príprave...
Offline

Užívateľ
Užívateľ
ochrana pred sql injection

Registrovaný: 20.03.08
Prihlásený: 08.03.17
Príspevky: 596
Témy: 149 | 149
Bydlisko: Houston, Texas
Vek: 24
Napísal autor témyOffline : 06.12.2008 10:13 | ochrana pred sql injection

satety nejak nefunguje na napr or 1=1


Offline

Správca fóra
Správca fóra
ochrana pred sql injection

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 06.12.2008 11:02 | ochrana pred sql injection

musis si ju doplnit o dalsie "ochrany" lebo verzia, ktora je zverejnena, osetruje len zakladne veci... odstranis napr "rovna sa"... dalej, ked vies, ze selectujes len jeden clanok, tak daj do sql LIMIT 1


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

Užívateľ
Užívateľ
ochrana pred sql injection

Registrovaný: 20.03.08
Prihlásený: 08.03.17
Príspevky: 596
Témy: 149 | 149
Bydlisko: Houston, Texas
Vek: 24
Napísal autor témyOffline : 06.12.2008 11:23 | ochrana pred sql injection

aha to vyzerá zaujímavo

ja to zatial riešim pomocou is_numeric

myslíte že to stačí?


Offline

Užívateľ
Užívateľ
ochrana pred sql injection

Registrovaný: 26.11.06
Prihlásený: 23.09.17
Príspevky: 4123
Témy: 317 | 317
Bydlisko: HE/BA
NapísalOffline : 06.12.2008 11:24 | ochrana pred sql injection

Dalo by sa nejako zariadiť aby sa odstránili z reťazca všetky nečíselné znaky?


_________________
Desktop: CASE: Cooler Master Centurion 532 MB: ASUS P5Q PRO Turbo CPU: Intel Core 2 Quad Q6600@2,4GHz FSB 1066MHz RAM: A-Data Vitesta 2×2GB 800MHz Cl 4-4-4-12 2T GPU: PowerColor PCS+ HD6950 HDD: Seagate Barracuda 500GB 7200rpm ODD1: LG DVD+/-RW + LS(PATA) ODD2:LG DVD+/-RW(SATA) PSU: LCD: DELL U2414M 24" 1920x1200
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3991
Témy: 96 | 96
NapísalOffline : 06.12.2008 11:27 | ochrana pred sql injection

miso250593 píše:
aha to vyzerá zaujímavo

ja to zatial riešim pomocou is_numeric

myslíte že to stačí?

ja to v podstate tiež ošetrujem is_numeric()


Offline

Správca fóra
Správca fóra
ochrana pred sql injection

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 06.12.2008 11:38 | ochrana pred sql injection

Drako píše:
Dalo by sa nejako zariadiť aby sa odstránili z reťazca všetky nečíselné znaky?

napr. pomocou ereg_replace a pribuznych funkcii,pripadne si celu tu hodnotu prevedies na ciselnu hodnotu...


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

Užívateľ
Užívateľ
ochrana pred sql injection

Registrovaný: 26.11.06
Prihlásený: 23.09.17
Príspevky: 4123
Témy: 317 | 317
Bydlisko: HE/BA
NapísalOffline : 06.12.2008 12:12 | ochrana pred sql injection

stenley píše:
napr. pomocou ereg_replace a pribuznych funkcii,
Ako by to vyzeralo? ereg_replace veľmi neovládam
stenley píše:
pripadne si celu tu hodnotu prevedies na ciselnu hodnotu...
No veď to práve chcem, len neviem ako :)


Offline

Správca fóra
Správca fóra
ochrana pred sql injection

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 06.12.2008 12:34 | ochrana pred sql injection

cez ereg_replace by to vyzeralo nasledovne:
Kód:
echo ereg_replace("[^0-9]","",$str);

tj, z hodnoty premennej $str sa vymaze kazdy neciselny znak...

prevod na ciselnu hodnotu spravis cez intval(), pripadne cez pretypovanie...


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

Užívateľ
Užívateľ
ochrana pred sql injection

Registrovaný: 26.11.06
Prihlásený: 23.09.17
Príspevky: 4123
Témy: 317 | 317
Bydlisko: HE/BA
NapísalOffline : 06.12.2008 12:35 | ochrana pred sql injection

Vďaka...


_________________
Desktop: CASE: Cooler Master Centurion 532 MB: ASUS P5Q PRO Turbo CPU: Intel Core 2 Quad Q6600@2,4GHz FSB 1066MHz RAM: A-Data Vitesta 2×2GB 800MHz Cl 4-4-4-12 2T GPU: PowerColor PCS+ HD6950 HDD: Seagate Barracuda 500GB 7200rpm ODD1: LG DVD+/-RW + LS(PATA) ODD2:LG DVD+/-RW(SATA) PSU: LCD: DELL U2414M 24" 1920x1200
Offline

Užívateľ
Užívateľ
ochrana pred sql injection

Registrovaný: 20.03.08
Prihlásený: 08.03.17
Príspevky: 596
Témy: 149 | 149
Bydlisko: Houston, Texas
Vek: 24
Napísal autor témyOffline : 06.12.2008 19:13 | ochrana pred sql injection

ale to is_numeric je postačujúce nie?

dá sa to nejak obísť?


Offline

Užívateľ
Užívateľ
ochrana pred sql injection

Registrovaný: 09.09.07
Prihlásený: 07.11.16
Príspevky: 3128
Témy: 233 | 233
Bydlisko: Nové Zámky
NapísalOffline : 06.12.2008 23:31 | ochrana pred sql injection

neda.... is_numeric je naj, pokial vies, ze to bude len cislo.... a ked vyberas jeden clanok, nezabudni na LIMIT 1 ;)


_________________
"It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď
Offline

Užívateľ
Užívateľ
ochrana pred sql injection

Registrovaný: 20.03.08
Prihlásený: 08.03.17
Príspevky: 596
Témy: 149 | 149
Bydlisko: Houston, Texas
Vek: 24
Napísal autor témyOffline : 07.12.2008 9:29 | ochrana pred sql injection

a ako sa dá ochrániť INSERT INTO?

povedzme pri komentároch?

ja používam funkciu tu z fóra safety myslíte že to stačí?


Offline

Skúsený užívateľ
Skúsený užívateľ
ochrana pred sql injection

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1586
Témy: 96 | 96
NapísalOffline : 07.12.2008 10:37 | ochrana pred sql injection

Spôsobov, ako spáchať SQL injection je veľa, každý iný.
mysql_real_escape_string by ti mohol pomôcť, ale nie je 100%.
Najlepší je whitelisting, čiže prejdeš vstup pomocou regexp-u a povolíš zápis do DB iba v prípade, že string prejde testom. Pozri, preg_match. Určite budeš potrebovať regulárne výrazy (regexp), tie si pozri napríklad na www.regular-expressions.info .
Proti jednému z typov sql injection je vhodné nepoužívať hodnota=1, ale hodnota="1". Všade s uvodzovkami, nie bez.
Keď ste hovorili o tých číslach, pomocou ereg_replace určite nie, to je príliš pomalé. settype, prípadne intval je presne na to, ale settype je rýchlejší (robil som benchmark).


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Užívateľ
Užívateľ
ochrana pred sql injection

Registrovaný: 20.03.08
Prihlásený: 08.03.17
Príspevky: 596
Témy: 149 | 149
Bydlisko: Houston, Texas
Vek: 24
Napísal autor témyOffline : 07.12.2008 10:41 | ochrana pred sql injection

prepáč ale takto nechápem nedáš mi aj príklad prosím?


Offline

Čestný člen
Čestný člen
ochrana pred sql injection

Registrovaný: 17.10.06
Prihlásený: 08.01.11
Príspevky: 1757
Témy: 17 | 17
NapísalOffline : 07.12.2008 10:57 | ochrana pred sql injection

pozeram, ze v tejto teme este nikto nespomenul prepared statements, tak pozri aj tie.


_________________
A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII code table.
Offline

Skúsený užívateľ
Skúsený užívateľ
ochrana pred sql injection

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1586
Témy: 96 | 96
NapísalOffline : 07.12.2008 11:14 | ochrana pred sql injection

Napríklad ak vieš, že prihlasovacie meno je zložené iba z malých písmen (bez diakritiky) alebo čísel, s maximálnou dĺžkou 12 znakov, tak spravíš:
Kód:
$meno = (preg_match("([a-z0-9]{1,12})",$_POST['meno']))?$_POST['meno']:null;

Na toto si sa pýtal?


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Užívateľ
Užívateľ
ochrana pred sql injection

Registrovaný: 20.03.08
Prihlásený: 08.03.17
Príspevky: 596
Témy: 149 | 149
Bydlisko: Houston, Texas
Vek: 24
Napísal autor témyOffline : 07.12.2008 11:29 | ochrana pred sql injection

ja som to ale chcel len do komentárov, formulára pomocou ktorého mi môže komentovať články na stranke


Offline

Skúsený užívateľ
Skúsený užívateľ
ochrana pred sql injection

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1586
Témy: 96 | 96
NapísalOffline : 08.12.2008 15:48 | ochrana pred sql injection

ereg("^[a-žA-Ž\s\d\-_?!.,]*$",$testovana_premenna)

Tam máš povolené písmená, čísla, medzery, tabulátory, nové riadky a znaky -_?!.,
Ak ti nestačia tieto znaky, napíš, poradím.


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Užívateľ
Užívateľ
ochrana pred sql injection

Registrovaný: 20.03.08
Prihlásený: 08.03.17
Príspevky: 596
Témy: 149 | 149
Bydlisko: Houston, Texas
Vek: 24
Napísal autor témyOffline : 08.12.2008 16:01 | ochrana pred sql injection

a keď to tým testom neprejde tak to odošle práznu kolonku alebo tie znaky nepovolené len odstráni?


Offline

Užívateľ
Užívateľ
ochrana pred sql injection

Registrovaný: 09.09.07
Prihlásený: 07.11.16
Príspevky: 3128
Témy: 233 | 233
Bydlisko: Nové Zámky
NapísalOffline : 08.12.2008 16:03 | ochrana pred sql injection

if(ereg("^[a-žA-Ž\s\d\-_?!.,]*$",$testovana_premenna)) {

} else {

}

takto.. alebo to dat do preg_replace.. to by slo nie ?


_________________
"It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď
Offline

Skúsený užívateľ
Skúsený užívateľ
ochrana pred sql injection

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1586
Témy: 96 | 96
NapísalOffline : 08.12.2008 17:07 | ochrana pred sql injection

No to je na tvojom rozhodnutí, či chceš zapísať prázdnu premennú, alebo chceš nehcené znaky odstrániť, prípadne vôbec záznam nezapísať... Povedz si.
Ale poriadne si premysli, aké znaky chceš povoliť. Ešte mi napadlo, že by si asi potreboval *+/


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Užívateľ
Užívateľ
ochrana pred sql injection

Registrovaný: 20.03.08
Prihlásený: 08.03.17
Príspevky: 596
Témy: 149 | 149
Bydlisko: Houston, Texas
Vek: 24
Napísal autor témyOffline : 08.12.2008 17:26 | ochrana pred sql injection

no také čo sa môžu dostať do komentárov ale potreboval by som aj znak : kôli smailom a tiež []

a chcem aby sa to zapísalo do databázy bez tých znakov ale aby sa aj vykonal jeden príkaz


Offline

Skúsený užívateľ
Skúsený užívateľ
ochrana pred sql injection

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1586
Témy: 96 | 96
NapísalOffline : 09.12.2008 9:09 | ochrana pred sql injection

to a-ž mi akosi robí hovadiny, nefunguje to ako to má (prejde aj spätné lomítko), takže musíme ísť inak na to. Ak používaš php5, môžeš použiť mysqli namiesto štandardných mysql funkcií.
http://sk.php.net/mysqli
Pozri si hlavne
http://sk.php.net/manual/en/mysqli.prepare.php
a potom mysli aj na xss, použi ešte napríklad http://sk.php.net/manual/en/function.htmlentities.php


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Správca fóra
Správca fóra
ochrana pred sql injection

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 09.12.2008 10:10 | ochrana pred sql injection

nefunguje to preto, lebo to je zle...

a co tak vsetky "nebezpecne" znaky prevadzat na html entity (pripadne escapovat)? v tomto pripade je uplne zbytocne pouzivat regularne vyrazy...


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

Skúsený užívateľ
Skúsený užívateľ
ochrana pred sql injection

Registrovaný: 29.10.07
Prihlásený: 12.06.17
Príspevky: 1408
Témy: 28 | 28
Bydlisko: Bratislava
Vek: 36
NapísalOffline : 09.12.2008 10:58 | ochrana pred sql injection

naco programovat vlastne riesenia, ked mozeme pouzit casoum overene riesenie?
class.inputfilter.php

v kombinacii s prepared statementom je to bezpecne riesenie.


_________________
PC: OS: Windows 10 (64bit) CPU: INTEL Core i5-4440 GPU: ASUS ATI R9280X RAM: Kingston 8GB DDR3 1600MHz MB: MSI B85-G43 Gaming HDD: Seagate 1TB HDD Barracuda SSD: SAMSUNG 120GB HDD 840 EVO CASE: COOLERMASTER N400
Mobil: OS: Android 4.4.2 Model: LG G2 D802 16GB
Offline

Skúsený užívateľ
Skúsený užívateľ
ochrana pred sql injection

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1586
Témy: 96 | 96
NapísalOffline : 09.12.2008 14:20 | ochrana pred sql injection

Stenley, mi išlo o ukážku whitelistingu


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Skúsený užívateľ
Skúsený užívateľ
ochrana pred sql injection

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1586
Témy: 96 | 96
NapísalOffline : 12.12.2008 0:49 | ochrana pred sql injection

Už som prišiel konečne na to, ako na diakritiku.
Kód:
preg_match("(^[\pL\w\s_\.,?! -]{1,255}$)",$value);

\pL je ten komponent, čo som furt hľadal.
Sorry, ak to je už out of date


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
 [ Príspevkov: 29 ] 


ochrana pred sql injection



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Ochrana pred SQL injection

v PHP, ASP

16

1175

14.06.2008 17:08

lostwarrior

V tomto fóre nie sú ďalšie neprečítané témy.

SQL Injection ochrana

v PHP, ASP

11

248

13.02.2014 12:03

GoodWill

V tomto fóre nie sú ďalšie neprečítané témy.

Ochrana proti SQL INJECTION

v PHP, ASP

3

376

16.05.2010 15:29

ac.milan

V tomto fóre nie sú ďalšie neprečítané témy.

SQL injection

v Služby a webstránky

1

73

27.02.2014 17:36

walther

V tomto fóre nie sú ďalšie neprečítané témy.

SQL injection

v Databázy

7

564

11.01.2010 17:17

Antuanet

V tomto fóre nie sú ďalšie neprečítané témy.

SQL Injection

v PHP, ASP

2

429

07.01.2010 20:43

rooobertek

V tomto fóre nie sú ďalšie neprečítané témy.

sql injection a ine

v PHP, ASP

5

300

25.02.2010 5:44

rooobertek

V tomto fóre nie sú ďalšie neprečítané témy.

hrozi mi v tomto priklade sql injection ?

v PHP, ASP

10

354

06.02.2010 9:57

Ďuri

V tomto fóre nie sú ďalšie neprečítané témy.

spam ochrana, sql ochrana

v PHP, ASP

14

546

08.01.2011 23:56

Feko

V tomto fóre nie sú ďalšie neprečítané témy.

ochrana pred rovnakymi obrazkami

v PHP, ASP

1

197

09.04.2012 21:59

BX

V tomto fóre nie sú ďalšie neprečítané témy.

ochrana disku pred otrasmi

v Operačné systémy Unix a Linux

5

374

03.11.2008 22:17

rooobertek

V tomto fóre nie sú ďalšie neprečítané témy.

ochrana dieťaťa pred nevhodnou stránkou

v Sieťové a internetové programy

6

190

17.04.2017 21:54

tairikuokami

V tomto fóre nie sú ďalšie neprečítané témy.

Moje dokumenty - ochrana pred zmenou ich obsahu

v Operačné systémy Microsoft

2

97

08.11.2012 10:35

dodos

V tomto fóre nie sú ďalšie neprečítané témy.

ochrana fora pred spamami a "spamovymi uzivatelmi"

v Redakčné systémy

4

691

04.01.2011 12:20

prohibit

V tomto fóre nie sú ďalšie neprečítané témy.

Ochrana stranky pred "naklikavacmi"

v Ostatné

0

294

28.06.2010 22:53

scrysurn

V tomto fóre nie sú ďalšie neprečítané témy.

Aka ochrana zariadenia (bleskoistka, prep. ochrana)

v Siete

2

227

06.10.2012 18:38

peto007



© 2005 - 2017 PCforum, edited by JanoF