Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ 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
Bydlisko: Houston, Texas
Príspevok NapísalOffline : 06.12.2008 9:14

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: 531
Témy: 27
Bydlisko: Nitra
Príspevok NapísalOffline : 06.12.2008 10:05

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
Bydlisko: Houston, Texas
Príspevok Napísal autor témyOffline : 06.12.2008 10:13

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: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 06.12.2008 11:02

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







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

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

Registrovaný: 20.03.08
Prihlásený: 08.03.17
Príspevky: 596
Témy: 149
Bydlisko: Houston, Texas
Príspevok Napísal autor témyOffline : 06.12.2008 11:23

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ý: 22.01.24
Príspevky: 4118
Témy: 319
Bydlisko: HE/BA
Príspevok NapísalOffline : 06.12.2008 11:24

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


Offline

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

Registrovaný: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3984
Témy: 96
Príspevok NapísalOffline : 06.12.2008 11:27

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: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 06.12.2008 11:38

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...







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

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

Registrovaný: 26.11.06
Prihlásený: 22.01.24
Príspevky: 4118
Témy: 319
Bydlisko: HE/BA
Príspevok NapísalOffline : 06.12.2008 12:12

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: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 06.12.2008 12:34

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...







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

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

Registrovaný: 26.11.06
Prihlásený: 22.01.24
Príspevky: 4118
Témy: 319
Bydlisko: HE/BA
Príspevok NapísalOffline : 06.12.2008 12:35

Vďaka...


Offline

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

Registrovaný: 20.03.08
Prihlásený: 08.03.17
Príspevky: 596
Témy: 149
Bydlisko: Houston, Texas
Príspevok Napísal autor témyOffline : 06.12.2008 19:13

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: 3114
Témy: 233
Bydlisko: Nové Zámky
Príspevok NapísalOffline : 06.12.2008 23:31

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
Bydlisko: Houston, Texas
Príspevok Napísal autor témyOffline : 07.12.2008 9:29

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: 1585
Témy: 96
Príspevok NapísalOffline : 07.12.2008 10:37

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
Bydlisko: Houston, Texas
Príspevok Napísal autor témyOffline : 07.12.2008 10:41

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: 1752
Témy: 17
Príspevok NapísalOffline : 07.12.2008 10:57

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: 1585
Témy: 96
Príspevok NapísalOffline : 07.12.2008 11:14

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
Bydlisko: Houston, Texas
Príspevok Napísal autor témyOffline : 07.12.2008 11:29

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: 1585
Témy: 96
Príspevok NapísalOffline : 08.12.2008 15:48

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
Bydlisko: Houston, Texas
Príspevok Napísal autor témyOffline : 08.12.2008 16:01

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: 3114
Témy: 233
Bydlisko: Nové Zámky
Príspevok NapísalOffline : 08.12.2008 16:03

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: 1585
Témy: 96
Príspevok NapísalOffline : 08.12.2008 17:07

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
Bydlisko: Houston, Texas
Príspevok Napísal autor témyOffline : 08.12.2008 17:26

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: 1585
Témy: 96
Príspevok NapísalOffline : 09.12.2008 9:09

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: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 09.12.2008 10:10

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...







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

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

Registrovaný: 29.10.07
Prihlásený: 27.10.23
Príspevky: 1395
Témy: 30
Bydlisko: Bratislava
Príspevok NapísalOffline : 09.12.2008 10:58

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 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME
Mobil: Xiaomi POCO F2 PRO
Offline

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

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1585
Témy: 96
Príspevok NapísalOffline : 09.12.2008 14:20

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: 1585
Témy: 96
Príspevok NapísalOffline : 12.12.2008 0:49

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!
Odpovedať na tému [ Príspevkov: 29 ] 


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

1548

14.06.2008 17:08

lostwarrior Zobrazenie posledných príspevkov

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

v PHP, ASP

11

555

13.02.2014 12:03

GoodWill Zobrazenie posledných príspevkov

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

v PHP, ASP

3

603

16.05.2010 15:29

ac.milan Zobrazenie posledných príspevkov

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

v PHP, ASP

2

678

07.01.2010 20:43

rooobertek Zobrazenie posledných príspevkov

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

v Databázy

7

814

11.01.2010 17:17

Antuanet Zobrazenie posledných príspevkov

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

v Služby a webstránky

1

293

27.02.2014 17:36

walther Zobrazenie posledných príspevkov

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

v PHP, ASP

5

470

25.02.2010 5:44

rooobertek Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. hrozi mi v tomto priklade sql injection ?

v PHP, ASP

10

611

06.02.2010 9:57

Ďuri Zobrazenie posledných príspevkov

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

v PHP, ASP

14

849

08.01.2011 23:56

Feko Zobrazenie posledných príspevkov

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

v PHP, ASP

1

462

09.04.2012 21:59

BX Zobrazenie posledných príspevkov

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

608

03.11.2008 22:17

rooobertek Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ochrana pred vírusmi a hrozbami

v Antivíry a antispywary

1

648

19.03.2021 17:58

Vinchenzo Zobrazenie posledných príspevkov

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

670

17.04.2017 21:54

tairikuokami Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ochrana CNC stroja pred vírusom

v Siete

5

363

13.10.2020 22:57

maiob Zobrazenie posledných príspevkov

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

360

08.11.2012 10:35

dodos Zobrazenie posledných príspevkov

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

954

04.01.2011 12:20

prohibit Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra