Записи по тегу: безопасность

Исследование уязвимости PHP include

2 комментария

Помимо программирования, я увлекаюсь исследованиями в области безопасности web приложений. Занимаюсь аудитом на заказ и так далее. И вот на днях мне попался вот такой вот код (я немного упростил его, чтобы было понятнее):

$module=addslashes($_REQUEST['module']);
include('modules/'.$module.'/module.class.php');

Налицо обычная уязвимость класса PHP-инклудинг. Но, человек, для которого я делал аудит, заявил мне, мол, эту уязвимость эксплуатировать невозможно, поэтому она не считается. Пришлось с ним поспорить Читать далее →

Критическая уязвимость NetCat

4 комментария

Буквально сегодня один из моих клиентов написал мне что его сайт взломали. Чесно говоря меня это сильно удивило. Настолько сильно что я попросил клиента скинуть логи с его сервера за период когда его сайт ломали.

В логах нашел интересную запись подтверждающую то что в Неткате все таки была критическая уязвимость.
Читать далее →

Никогда не доверяй своим пользователям

1 комментарий

«Не доверяйте своим пользователям. Они могут навредить Вам.»
Дэйв Чайлд

Дэйв Чайлд (Dave Child) стоит за недавно переименованным Added Bytes (ранее ilovejackdaniels.com, сейчас www.addedbytes.com) — сайтом, где приводятся написанные Дэйвом шпаргалки по многим языкам программирования. Он работал на многие компании в Великобритании и добился признания в мире программирования.

«Итак, главное правило веб-разработки: никогда, ни при каких обстоятельствах не доверяй своим пользователям. Предполагай, что любые данные, которые сайт получает от пользователя, содержат вредоносный код. Всегда. Включая и данные, которые ты проверил на стороне клиента, например, с помощью JavaScript. Если ты сможешь этим руководствоваться, это станет залогом твоего успеха. Если безопасность в PHP важна для тебя, этот единственный пунктик самый важный для усвоения.»

Теперь разберем все возможные данные передающиеся от пользователя в контексте PHP, а точнее глобальные массивы $_GET, $_POST, $_COOKIE, $_SERVER, $_SESSION и $_ENV.

Дада! $_SERVER, $_SESSION и $_ENV — тоже не безопасны!

PS: статья — НЕ перевод, как может показаться из вступления. Я привел лишь очень удачную цитату. А сама статья — это описание моей личной точки зрения.
Читать далее →

Реализация Captcha без БД

16 комментариев

На данный момент все известные капчи делятся на категории

  • Хранение некоего ключа в базе данных
  • Хранение некоего ключа в сессии
  • Без хранения каких либо данных

Минусы первых двух видов — это необходимость работы с файлами (для БД — операции запись/чтение, а  для сессий это еще и создание файлов). Плюсы же — это высокая защищенность и простая реализация.

На данный момент все известные реализации капчи из третьей категории являются не защищенными. Но плюс у них — это отсутствие работы с файлами. Допустим при массовой атаке спам ботов не засирается таблица в БД и не засирается папка с сессиями. Читать далее →

Немножко о типизации и сравнениях в PHP

2 комментария

Всем известно что в PHP нет строгой типизации. Вроде бы все хорошо, но! Иногда нестрогая типизация может привести к критическим ошибкам в ваших приложениях. В данной статье я приведу пару таблиц приведения типов данных в PHP которую каждый разработчик должен держать в голове. Читать далее →