Пока что сайт защищен htaccess, но я думаю этого не достаточно. Так как он не спасет от например:
www.сайт.ру/lesson/16 UNION * lessons WHERE lesson="$proba" ...... к примеру
Суть такова, что нужно сделать надежную защиту для сайта.
Спустя 6 часов, 14 минут, 35 секунд (30.06.2012 - 07:10) Эли4ка написал(а):
in9emix
mysql_real_escape_string,htmlspecialchars
mysql_real_escape_string,htmlspecialchars
Спустя 49 секунд (30.06.2012 - 07:10) fdr написал(а):
Цитата |
www.сайт.ру/lesson/16 UNION * lessons WHERE lesson="$proba" |
Для этого можно использовать mysql_real_escape_string ()
А так в общем все входяшие данные перед их использование нужно проверять)))
Спустя 32 минуты, 16 секунд (30.06.2012 - 07:43) in9emix написал(а):
Спасибо =)) Всё получилось
Спустя 3 минуты, 14 секунд (30.06.2012 - 07:46) in9emix написал(а):
А если переменная == цифре, я могу вместо mysql_real_escape_string() юзать intval() ?
Спустя 1 час, 37 минут, 43 секунды (30.06.2012 - 09:24) ИНСИ написал(а):
in9emix используй преобразование в число: (int)
Цитата |
UNION * lessons WHERE lesson="$proba" ...... к примеру |
Для таких методов, необходимо выставить не все права пользователю для работы с БД, а только основные, с которыми он работает.
Часто пользователь работает только с: SELECT, UPDATE, DELETE, INSERT. Их и ставьте, остальные отключите.
Также можно заменять такие команды, к примеру:
function check($value = '') {
$arr = array(
's e l e c t' => 'select', 'i n s e r t' => 'insert', 'u p d a t e' => 'update', 'd e l e t e' => 'delete', 'u n i o n' => 'union'
);
foreach($arr as $key => $info)
$value = str_ireplace($info, $key, $value);
return $value;
}
Даже если попытаются выполнить запрос, ничего не получится. Это конечно если вы все переменные проверяете.