|
Тема |
Re: Zashtita na PHP/SQL sreshtu haker4eta? [re: MG] |
|
Автор |
$burov (начинаещ) |
|
Публикувано | 30.09.04 17:18 |
|
|
Ако заявката е написана неправилно, могат да ти унищожат базата данни. Винаги слагай кавички (независимо единични или двойни) около променливите в заявката.
Правилно:
$query = "select * from items where item_id = '$_GET[id]' ";
Неправилно:
$query = "select * from items where item_id = $_GET[id] ";
Какво ще се получи, ако $_GET[id] съдържа "; $query = "drop database my_store
$query = "select * from items where item_id = "; $query = "drop database my_store ";
Заявката е пренаписана! Сега ще ми кажеш, ама от къде ще ми знаят името на базата данни, ама от къде ще знаят, че използвам $query а не например $my_query. Отговора е един - по метода на пробата и грешката. Ако някъде имаш die(mysql_error()), много неща могат да се научат.
Например, ако в страницата с резултатите от търсенето имаш нещо като:
http://www.domain.com/results.php?kw=test&order_by=price
всеки би се сетил, че имаш колоната в таблицата с продуктите, която съдържа цената на продукта, се казва price. А какво ще стане ако имаш die(mysql_error()) и горния ГЕТ метод го пренапиша като:
http://www.domain.com/results.php?kw=test&order_by=price222
ще получа съобщение за грешка, което ми казва "няма колона price222 в таблицата catalog - вече знам как се казва таблицата с продуктите и мога да я унищожа.
И т.н.
Редактирано от $burov на 30.09.04 17:19.
|
| |
|
|
|