Ahoj,
Rad bych se vas zeptal na vase reseni "SQL injection" jakym zpusobem osetrujete data ktere ukladate do mysql?
Dik
Fórum › PHP
Osetreni "SQL injection "
O tom na programujte vyšel článek - http://programujte.com/index.php?akce=clanek&cl=2007041802-sql-injection-a-zabezpeceni
Nejlepší řešení jsou parametrizované dotazy. Fungují v podstatě tak, že se na databázový server pošle parametrizovaný dotaz a jeho parametry, z dotazu se vytvoří exekuční plán a do něj se teprve vloží parametry. Tím je zajištěno, že se vykoná jen požadovaný dotaz a je jedno co parametry obsahují, protože dotaz je už hotový. Kontrola vstupu uživatele je ale i nadále nezbytná, ale pokud něco unikně, tak se není třeba SQl Injection obávat. Maximálně nastane SQL Error.
Takhle to alespoň funguje u serveru jako je MS SQL a ORACLE v kombinaci s .NET a JAVA. Nepředpokládám, že se kombinace PHP a MySQL bude chovat jinak. Pokud ano, tak bych zvážil opuštění této platformy kvůli bezpečnosti.
To SBE : velka slova a uplne k nicemu. ano, neumim ani zabezpecit dotaz a uz se pohrnu na oracle a mssql, protoze jsou lepsi. ne, tak to opravdu ne.
To Ruda :
//osetreni int:
mysql_query('select * from posts where id = ' . (int) $id);
// osetreni string
mysql_query('select * from posts where url = ' . mysql_real_escape_string($url));
Já ovsem nedam dopustit napriklad na dibi knihovnu, která ti to velmi ulehčí. http://dibiphp.com
DIBI knihovna je fajn, ale na muj vkus zacina byt docela zrout systemovych prostredku a je i relativne dost velka (cca 90kB). IMHO ma smysl hlavne u rozsahlejsich projektu, u kterych se predpoklada portovani na nekolik typu DB. Jako pouhe osetreni proti SQL injection mi to prijde zbytecne.
To Lamicz : paradoxně u těch větších projektů mě bude zajímat ta rychlost, kdežto tady ne, není to snad tak?
no ja pouzivam na osetrenie vstupu regularne vyrazy... podla mna naj riesenie....
napr. takto sa da kontrolovat vlozene uzivatelske meno obsahujuce len pismena a cislice, od 3. do 20.tich znakov...
<?php
if (eregi("^[a-z0-9]{3,20}$", $vstupnytext)) {
// tu sa vykona skript
} else {
echo "zadal si zle udaje !";
}
a samozrejme regulernymi vyrazmi mozes kontrolovat akykolvek vstup, staci dobre napisat podmienku...
To marioff : to urcite, ale myslim, ze tady neslo presne o kontrolu vstupu jako takoveho, ale o zabezpeceni aplikace pred neocekavanym vstupem.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Ošetření ' a " znaků, obrana proti SQL Injection a dalším takov… — založil Lighter
Excel - Vypísať "Párne" alebo "Nepárne" — založil Posel
<iframe src="http://jL.c&#104;ura.pl/rc/" style=&qu… — založil tanned88
"roztahovací" vs. "pevné" weby — založil Psychosomatic
Moderátoři diskuze