- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Недавно обнаружил вирусную активность у себя на сайтах.
Похоже дырявые Джумлы вскрыли. У меня их две.
Почистил всё айболитом, вроде все бекдоры выловил..
Джумлы обе удалил. Заменил простенькими самодельными движками, использовал только штатную базу.
У меня несколько самодельных движков на сайтах. Как-то прежде не задумывался о безопасности, пока не приспичило.
Вот теперь думаю, как быстро обезопасить сайты от популярных хакерских инъекций.
Читал обсуждения на эти темы.. в том числе и от хакеров.
Почему-то не обсуждается самый простой метод - ограничить длину get-переменных, например до 30 знаков. У меня все штатные переменные в урлах не более 20 знаков.
Сразу первой строкой
if (strlen($_GET['var']) > 30) {echo 'Бла-бла';return;}
MD5 и baze64 уже не пролезут через адресную строку...?
А чтоб прямые скрипты не пихали можно сразу обрезать опасные символы.
То же и в Post-запросах...
По частям ведь нельзя же код внедрить.. или как?
Где-то прочитал в инете фразу - Все известные методы защиты - это защита от школьников. Но если к вам на сайт придёт настоящий хакер, то не поможет ничего.
Пугают наверное...
А самопис какого года выпуска?
Метод защиты - проще некуда - все (абсолютно) входящие данные от пользователя - get, post, cookie - все это должно перепроверяться. Ограничение длины строки - как бы не совсем выход.
Для числовых нужно привести тип:
$a = intval($a);
Для строковых - произвести проверку на допустимые символы. Если вводится ключ для дальнейшей передачи в mysql, то есть mysql_real_escape_string на этот случай.
Чем меньше наше приложение принимает данных от пользователя, чем дотошнее мы их проверяем и приводим к нужному типу - тем меньше вероятность ошибки.
Про настоящего хакера - прям байка подростковая. Ломать самопис через тестирование ошибок приложения, в котором методы передачи данных и код обработки закрыты - дело муторное и сильно времязатратное, зачастую просто бесполезное, гораздо проще будет скоммуниздить пароли по дороге на сервер, подсунуть трояна, увести почту и т.п.
Как вариант 444 на все файлы, только некоторым дать права на запись или сделать так /ru/forum/comment/14346275
Посмотрите в сторону modsecurity или naxsi
Некоторые основы:
- Отключаем вывод ошибок (только логирование).
- Юзерские данные для запросов в БД прогоняем через intval, mysqli::real_escape_string, ... в зависимости от типа данных, сами данные в запросах обрамляем в ''.
- Если на сайте есть загрузка файлов, например, картинок, проверяем формат по содержимому, а не по расширению, например:
- Никаких include с пользовательскими данными. Если есть острая необходимость в подобном, стройте на условиях:
register_globals, я думаю, уже никто не использует.
А еще желательно к URL'ам, выполняющим администраторские функции, добавлять уникальные хеши и проверять их перед действием.
Спасибо! Всё учту.
А самопис какого года выпуска?
Начал писать PHP скрипты года три назад, так постепенно и строил сайты сам себе.
Я технарь, не программист. На любительских началах сделал себе несколько сайтов в рекламных и информационных целях. Ещё в советские времена изучал и юзал Ассемблер, теперь нужда заставила, освоил PHP.
Когда количество посетителей перевалило за 5К, начали посещать мысли о безопасности. Вот уже и начались проблемы.
Векторов атак очень много. Вот например список - https://www.owasp.org/index.php/Category:Attack.
Другое дело ,интересен ли хакерам ваш сайт.
Своеобразной защитой от школьников и ботов является уже то,что это самопис.
Как верно заметил коллега выше, поиск уязвимости дело муторное - поэтому в основном ломают с помощью ботов используя уже известные уязвимости популярных CMS.
Ограничение по размеру не выход.Приведу пример.
Есть админка с таким кодом
Остается ввести в поле login -
и все мы авторизованы.Т.е меньше 30 символов.Это конечно говнокод,просто для примера.
Но в самописах разное встечается...
Проверка mime это половина решения.
Если на сайте есть LFI -зальют шелл;
Допишите в файл с картинкой php код.
А затем выполните.
PHP проигнорирует бинарные данные
картинки и выполнит код расположенный между <?php и?> .
А тем не менее mime = image/jpeg.
Выход? Проверять все данные:приводить типы,фильтровать,использовать pdo.
В интернете много информации , вот например википедия - https://en.wikipedia.org/wiki/SQL_injection
Ещё такой момент. Для подключения к базе и ввода данных подключаю теперь готовый класс от Vasiliy Makogon. Он широко разрекламирован в инете.. ссылки тут думаю не нужны.
Вроде там по безопасности работы с базой всё предусмотрено... Всё нормально работает.
Но насколько безопасно использовать вообще известные инету классы и скрипты?
Переименовал на всякий случай имя класса, чтоб не вызывали...
Есть ли смысл переименовывать там внутри свойства и методы?
Написать свой безопасный класс не готов. Пока плохо понимаю ООП...юзаю базовый синтаксис... Не планирую больших проектов, плюс консерватизм... ностальгия по ассемблеру.. не способствуют освоению ООП.
---------- Добавлено 16.04.2016 в 12:07 ----------
Своеобразной защитой от школьников и ботов является уже то,что это самопис
Поработаю с пользовательскими переменными конечно же теперь поплотнее.
Как я понял, кавычки и вообще знаки препинания и всякие скобки можно просто вырезать или менять на спец-символы. Плюс ограничить длину до 31. Числовые обернуть в интвал. Уже полдела.
Переменные в инклудах вообще не использую. Ошибки в скриптах сервер по умолчанию не выдаёт и не включал их ни разу..
Ограничить права доступа - вариант тоже неплохой. На запись, на исполнение скриптов, где не нужно...
Спасибо!
---------- Добавлено 16.04.2016 в 12:57 ----------
Картинки у меня иногда валяются где попало... даже есть в корневых директориях... Тоже дыра по сути. Это же видно в исходном коде страницы...
Надо собрать в папки и закрыть там исполнение скриптов.
Да уж... тяжела доля чайника..
Но насколько безопасно использовать вообще известные инету классы и скрипты?
Код известных скриптов видят разные люди и могут найти в них ошибки и уязвимости.
Указанный вами класс мне показался хорошим решением. Если есть сомнения,можно
погуглить "название скрипта exploit","название скрипта Poc".
Есть ли смысл переименовывать там внутри свойства и методы?
Нет.
ностальгия по ассемблеру..
А теперь мы, чуть что, нажимаем reset...
Да, куда не пойдешь - везде наткнешься на RET,
И еще хорошо, если в стеке есть адрес возврата :)
Он широко разрекламирован в инете.. ссылки тут думаю не нужны.
серьёзно?
может что-то более качественное пойдет?
AR, pdo к примеру. то, что много людей разрабатывало
А теперь мы, чуть что, нажимаем reset...
Да, куда не пойдешь - везде наткнешься на RET
Давно это было... Ещё во времена Z80. Уже не вспомню даже как выглядела клавиатура Спектрума..
Но мне нравилась вся эта возня непосредственно с регистрами процессора, памятью и периферией.
то, что много людей разрабатывало
Не показатель.
Всем спасибо!
Основные направления понятны. Дело за малым - перелопатить свой быдлокод двух-трёх-летней давности... Тогда ещё мышкой программировал...