Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Математический тренажёр и его уязвимости

1.8K
20 июля 2007 года
Валериус
190 / / 14.07.2006
Писал скрипт "математического тренажёра": простая тренировка на сложение чисел от 1 до 100. Чтобы заставить скрипт решать им же придуманный пример, я решил использовать функцию eval(). Зная, насколько он опасна, присобачил перед выполнением проверку с помощью регулярных выражений. В итоге, код, отвечающий за решение, выглядит так:
Код:
//Проверка по рег. выражению. Если формат неправильный, то просто заменяем переменную на пример 0 + 0
if (!preg_match("|^[0-9]{1,3}\s\+\s[0-9]{1,3}$|", $_POST["example"])) {$_POST["example"] = "0 + 0";}

eval("\$rez = ".$_POST["example"].";"); //Решаем пример

if ($rez == $_POST["rezult"]) //Сравниваем своё решение с решением юзера и выдаём соотв. результат
{
    echo "<font color=\"#00ff00\"><b> + </b></font>\n";
}
else
{
    echo "<font color=\"#ff0000\"><b>".$rez."</b></font>\n";
}

Здесь $_POST["example"] - это сам пример, а $_POST["rezult"] - его решение.
Вопрос в том, всё ли я предусмотрел? Как ещё можно ковырнуть мой скрипт, чтобы нагадить?

P.S. Весь код лежит здесь.
7.9K
20 июля 2007 года
vasa_c
191 / / 05.04.2007
Не понял. Вводит можно только: <число> + <число>?
Не легче разбить строку на эти два числа и просто их сложить без всякого eval() ?
1.8K
20 июля 2007 года
Валериус
190 / / 14.07.2006
Мм... А это мысль :)
Вообще-то, я планировал добавить туда ещё вычитание.
7.9K
20 июля 2007 года
vasa_c
191 / / 05.04.2007
Цитата:
Чтобы заставить скрипт решать им же придуманный пример


Им же придуманный, это как?

1.8K
20 июля 2007 года
Валериус
190 / / 14.07.2006
Он в другом месте (я ужe давал ссылку на весь скрипт) случайно выдаёт числа и отправляет их пользователю.
7.8K
21 июля 2007 года
Tingo
201 / / 17.05.2007
Цитата:
Вопрос в том, всё ли я предусмотрел? Как ещё можно ковырнуть мой скрипт, чтобы нагадить?


А, в принципе, кому и зачем гадит-то?
Ведь ничего скрытного не достать,
и ничего не испортить, не так ли?

1.8K
25 сентября 2007 года
Валериус
190 / / 14.07.2006
Цитата: Tingo

Ведь ничего скрытного не достать,
и ничего не испортить, не так ли?


Если этот скрипт вывесить в общий доступ и разрешить выполнять на своём сервере, то есть вероятность, что кому-то захочется передать eval'у что-нибудь интересное, вроде рекурсивного удаления файлов и папок.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог