» »

Zaščita pred SQL injection - user?

Zaščita pred SQL injection - user?

luksorzi ::

Zadeva je sledeča.
Bi bila učinkovita zaščita pred sql injection, če bi userju v mysql dal samo možnost dodajanja v tabelo?

HardFu ::

ne
http://codeable.io

MrStein ::

Bo pač lahko dodajal v tabelo, kar če.
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

Netrunner ::

uporabi prijeme kot so ... mysql_real_escape_string ipd ...na guglu je precej tega
Doing nothing is very hard to do... you never know when you're finished.

technolog ::

the-uros, kdo je omenjal PHP????

luksorzi ::

Sej delam u php.
Samo tko na pamet mi je padlo. Bom uporabil mysql_real_escape_string, za ziher bom pa še privilegije nastavu.

technolog ::

Ja, ampak tega the-uros ne more vedet, razen če si si "blizu" z njim.

HardFu ::

technolog, saj jezik nima veze, ce uros napise mysql_real_escape_string, potem se iz imena funkcije nekako vidi njena namembnost tudi ce bi delal v pythonu ali javi, ne?
http://codeable.io

technolog ::

Ne. Iz "real escape string" ne morš vedet nič. In java nima podobne funkcije, za python ne vem. Tam se stvari delajo drugače. S prepared statementi.

HardFu ::

Ne? Zanimivo, ce vpisem "mysql_real_escape_string" v google, je prvi zadetek opis funkcije. In za vse ne-php programerje je to najbrz dovolj informacij da se potem znajdejo naprej. V nasprotnem primeru so pa najbrz nesposobni.
http://codeable.io

technolog ::

In java nima podobne funkcije, za python ne vem. Tam se stvari delajo drugače. S prepared statementi.

HardFu ::

Ce v google vpisem "mysql_real_escape_string java" dobim tole stran in na njej dovolj informacij, da vem kako naprej.

Ne morem se strinjat da iz zveze "mysql escape string" ne mores nic vedet. Ce si programer z vsaj nekam izkusnjami potem ti to da neko izhodisce.
http://codeable.io

technolog ::

No dobro, zakaj pa ravno mysql_real_escape_string? Več in kakovostnejše zadetke boš dobil če boš vpisal "sql injection" + ime jezika.

dbevfat ::

Ker če sprašuje tako vprašanje, sigurno ne dela v Javi? ;)
nvr2fat

HardFu ::

tu pa imata oba prav :)
http://codeable.io

luksorzi ::

LOL kaka razprava :)
Samo zanimalo me je, če bi omejitev pravic bistveno pripomogla k varnosti spletne strani.

technolog ::

Ja, ti lahko omejiš samo na INSERTe, samo ti bo lahko vsakdo insertal kar bo hotel, ne nujno upoštevajoč "kalup", ki si ga določil, ko si programiral.

Seveda se pa zaščitiš pred tem da bi ti kdo karkoli brisal. Tako da omejitev pravic vsekakor pripomore k varnosti. Recimo dobro je, da onemogočiš DELETE in DROP, če ga ne potrebuješ.

phyro ::

to tudi mene zanima... vedno sem imel v mislih da bi čekiranje vsakega fielda z regexom ki dovoli samo crke in stevilke moglo bit dovolj. Po drugi strani se pa s temi stvarmi nisem preveč ukvarjal in nisem prepričan :P (mogoče še kaka finta v stilu \xc4 ipd?)

technolog ::

V redu je, če z regexom filtriraš samo črke in številke. Ne moreš dobit injectiona.

D-monLord ::

Ni čudno, da je toliko slabo spisanih web strani na internetu.
Prvi odgovor, ki sem ga pričakoval je, da bo nekdo takoj povedal, da se sql querijev ne sestavlja kot string, ampak da moraš uporabljati parametriziran query, ampak do sedaj tega odgovora še ni bilo.

Če bi se lotil izdelave spletne strani v katerikoli drugi tehnologiji (Python, Ruby, Java, .Net...), samo v PHP-ju ne, sploh ne bi prišli do tega vprašanja.

technolog ::

Za preprared statemente sem jaz povedal v 8 commentu. Nauč se brat ali pa si nabavi špegle.

Sploh pa s sestavljanjem v string ni nič narobe, le vsak argument morš ustrezno escapat. Ta pristop ni prav nič slabši, zgodi pa se, da neizkušeni programerji na to "pozabijo", ali pa se kakemu začetniku kak parameter "izmuzne".

AndrejS ::

Lahko pa uporabljaš stored procedures

MrStein ::

Kar je isto, ker tam moraš parametre uporabit. ;)
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

techfreak :) ::

D-monLord je izjavil:

Če bi se lotil izdelave spletne strani v katerikoli drugi tehnologiji (Python, Ruby, Java, .Net...), samo v PHP-ju ne, sploh ne bi prišli do tega vprašanja.

Res? SqlCommand cmd = new SqlCommand("SELECT * FROM novice WHERE id = " + Request.QueryString["id"]);


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

php login - simple

Oddelek: Izdelava spletišč
8894 (767) FrEaKmAn
»

Vdor v MySQL.com z vrivanjem SQL

Oddelek: Novice / Varnost
158518 (6396) techfreak :)
»

MySQL BETWEEN dates?

Oddelek: Programiranje
111401 (1315) Housy
»

Spletna videoteka

Oddelek: Programiranje
243891 (3081) nuclear
»

[php] Knjiga gostov

Oddelek: Izdelava spletišč
293172 (2375) darix

Več podobnih tem