[ 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
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: 531
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
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: 3948
Témy: 51 | 51
Bydlisko: Bratislava
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


_________________
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 | 149
Bydlisko: Houston, Texas
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ý: 09.10.24
Príspevky: 4118
Témy: 319 | 319
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?


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 | 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: 3948
Témy: 51 | 51
Bydlisko: Bratislava
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...


_________________
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ý: 09.10.24
Príspevky: 4118
Témy: 319 | 319
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: 3948
Témy: 51 | 51
Bydlisko: Bratislava
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...


_________________
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ý: 09.10.24
Príspevky: 4118
Témy: 319 | 319
Bydlisko: HE/BA
NapísalOffline : 06.12.2008 12:35 | ochrana pred sql injection

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 | 149
Bydlisko: Houston, Texas
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: 3114
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
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: 1585
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
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: 1752
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: 1585
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
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: 1585
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
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: 3114
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: 1585
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
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: 1585
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: 3948
Témy: 51 | 51
Bydlisko: Bratislava
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...


_________________
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 | 30
Bydlisko: Bratislava
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 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 | 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: 1585
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

1600

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

600

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

654

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

335

27.02.2014 17:36

walther

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

SQL injection

v Databázy

7

853

11.01.2010 17:17

Antuanet

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

SQL Injection

v PHP, ASP

2

716

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

510

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

652

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

925

08.01.2011 23:56

Feko

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

652

03.11.2008 22:17

rooobertek

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

ochrana pred rovnakymi obrazkami

v PHP, ASP

1

500

09.04.2012 21:59

BX

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

Ochrana pred vírusmi a hrozbami

v Antivíry a antispywary

1

768

19.03.2021 17:58

Vinchenzo

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

732

17.04.2017 21:54

tairikuokami

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

Ochrana CNC stroja pred vírusom

v Siete

5

447

13.10.2020 22:57

maiob

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

417

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

1011

04.01.2011 12:20

prohibit



© 2005 - 2025 PCforum, edited by JanoF