if($_GET['action']=="view")
{
$userID = $_GET['id'];
$res = mysql_query("SELECT * FROM `users` WHERE `id` = '". intval($userID) ."' OR `nickname` = '". mysql_real_escape_string($userID) ."'");
$row = mysql_fetch_assoc($res);
echo $row['login'];
}
Спустя 19 минут, 48 секунд (20.06.2010 - 18:00) SlavaFr написал(а):
я не вижу возможности инекции в этом sql.
Спустя 28 минут, 13 секунд (20.06.2010 - 18:28) gzim9x написал(а):
Цитата |
Возможна ли иньекция в данном скрипте? Если да то где и как её убрать? |
Код кажется безопасным. Но взглянем с другой стороны.
Безопасность этого участка зависит не только от вашего кода.
Например от того, какую версию MySQL вы используете -- в ранних версиях были баги с реализацией mysql_real_escape_string().
И еще... вдруг ранее вы использовали "SET NAMES..." и сменили дефолтную кодировку -- mysql_real_escape_string() об этом не знает -- как результат атака будет потенциально возможна.
http://stackoverflow.com/questions/1220182...t-sql-injection
Спустя 13 часов, 26 минут, 37 секунд (21.06.2010 - 07:55) Ka4_0k написал(а):
Цитата (gzim9x @ 20.06.2010 - 15:28) | ||
Код кажется безопасным. Но взглянем с другой стороны. Безопасность этого участка зависит не только от вашего кода. Например от того, какую версию MySQL вы используете -- в ранних версиях были баги с реализацией mysql_real_escape_string(). И еще... вдруг ранее вы использовали "SET NAMES..." и сменили дефолтную кодировку -- mysql_real_escape_string() об этом не знает -- как результат атака будет потенциально возможна. http://stackoverflow.com/questions/1220182...t-sql-injection |
Ну если mysql_real_escape_string передать вторым параметром идентификатор соединения с базой, то с со сменой кодировок всё должно быть ок.
Спустя 2 часа, 31 минута, 24 секунды (21.06.2010 - 10:26) gzim9x написал(а):
Ka4_0k
я больше писал об окружении... но уж если в деталях:
DeeKeiD, спрашивал "Возможна ли иньекция в данном скрипте...."
Вы написали "...если mysql_real_escape_string передать вторым параметром.....всё должно быть ок".
Да я с вами совершенно согласен -- должно, но (бронепоезд на запасном пути) все-же выношу экранирование в отдельный метод и дописываю время от времени по мере поступления информации
я больше писал об окружении... но уж если в деталях:
DeeKeiD, спрашивал "Возможна ли иньекция в данном скрипте...."
Вы написали "...если mysql_real_escape_string передать вторым параметром.....всё должно быть ок".
Да я с вами совершенно согласен -- должно, но (бронепоезд на запасном пути) все-же выношу экранирование в отдельный метод и дописываю время от времени по мере поступления информации
_____________
Бесполезно просить пощады у цезаря
Фатальная ошибка : Звонок в неопределенную функцию ©