Задать вопрос

Неожиданно правильное поведение программ

Периодически сталкиваюсь с такой ситуацией, когда та или иная система не должна работать, но почему-то работает. Не люблю такие ситуации по двум причинам — сложно отлавливать, и коллеги смотрят косо… работает ведь, чего тебе надобно.

А как вы относитесь к подобному «искусственному интеллекту»?

С одной стороны вроде как работает ведь. И в 90% случаев оказывается, что я когда-то давным давно предусматривал что-то, что позволило ему так работать. С другой стороны — раз не ясно почему оно работает, то оно может работать неправильно, а значит быть уязвимо.

Пример — сегодня показывал коллеге тест одной библиотеки которую я сейчас пишу.

И заметил что я там сделал опечатку. Вместо:

$data = $zarplata->read('money<?',100);

написал

$data = $zarplata->read('money<',100);

т.е. пропустил плейсхолдер.

Оказалось что код отработал верно, и по результатам теста все было ок.

Разбор полетов показал, что работало оно за счет того, что:

list($str_start,$str_end) = explode('#',$where,2);

спокойно отдает $where как начало строки, и пустую строку как окончание.

Но есть одно но — это отрабатывается в коде по обработке плейсхолдера # а значит и эскейпится и оформляется он несколько иначе. Итог — готовая sql-инъекция.

При правильном проектировании на самом деле часто бывает, что оно работает, и ты не понимаешь почему, и это нормально… но при неправильном может быть и такое…

Вот скажите мне, я параноик который случайно был вознагражден за свою паранойю или так правильно? :)
  • Вопрос задан
  • 2634 просмотра
Подписаться 2 Комментировать
Подписчики вопроса 2 К ответам на вопрос (6)