Как можно проверить ссылку на вирусы?

145
07 июня 2019, 08:50

Есть такая потребность как проверить ссылку, которую введет пользователь, на наличие вредоносных показателей, то есть имеется ли на сайте что-то, что способно нанести вред.

Вот как такую вещь реализовать на PHP или хотя бы алгоритм проверки и показатели, которые можно выявить явно и реализовать? Ходил в google и там есть проверка, но на какие-то сайты просто "Нет данных", а это не годится.

Answer 1

Если вы имеете ввиду написать самостоятельно, то время, которое вы затратите на анализ и разработку, и в том числе на поддержку такой защиты, вряд ли будет соответствовать необходимости и полезности данной функциональности.

Будет проще воспользоваться сторонним API проверки сайтов и покрыть большую часть опасных сайтов, а малую часть принять как погрешность.

Покрыть все сайты невозможно и какую-то часть ответственности стоит переложить на пользователя, который решил перейти по данной ссылке.

А есть ли смысл в такой защите для вашего сайта?

Современные браузеры практический не дают ненести вред устройству пользователя через выполняемый код, если пользователь придерживается основных правил безопасности и не открывает на мобильном устройстве скачанный apk файл выставляя везде галочку "устанавливать приложения из неизвестных источников".

Крашнуть браузер заполнив память и всякие фишинговые сайты не в счет, первое может быть ошибкой программиста, а во втором случае все основано на глупости пользователя и такие сайты без участия реального человека пользователей не найдет не один сканер.

Если вы создаете какой-то проект, в котором ссылки играют одну из главных ролей (например: поисковая система), наверное в этом есть смысл, чтобы предупредить неопытных пользователей от неправильных действий. В любом случае стоит задуматься, нужно ли вам это?

Алгоритмы поиска вирусов в WEB

При поиске вирусов в веб выделяют два способа анализа:

  • Статический
  • Динамический

Статический анализ - это поиск вредоносных вставок: код javascript, ссылки на фишинговые страницы и т.п. Это заранее собранная база данных по которой анализируется страница без выполнения действий на ней и если в ней нет заранее определенной сигнатуры, то найти вирус не получится. Нашли сигнатуру или какой-то контент относящийся к вирусу, то пометить его подозрительным или внести в базу.

Динамический анализ - это сканер который совершает какие-то действия на странице. Например, робот загружает страницу в разных браузерах, ускоряется внутренний таймер, отслеживаются параметры которые передаются в опасные функции (eval), подменяются referrer и т.д. Тут ваша фантазия не ограничена, можно даже выполнять реальные переходы по сайту нажимая на различные ссылки, но цель одна - заставить вредносный код загрузится, например для показа окна "Ваш компьютер заблокирован!!! Отправьте миллион рублей иначе щас все данные удалятся!!"

Для поиска опасного контента применяют комплексный подход, в котором совмещают статический и динамический анализ. Каждая компания использует свой набор алгоритмов для поиска соответствующих опасных сайтов и соответствующие базы данных сигнатур разработаны под конкретный продукт.

А простую проверку могу я написать? На общих показателях?

Если вы хотите написать простую проверку на фишинг, то можете получать страницу по URL и искать на ней способом статического анализа список заблокированных ссылок или подозрительный контент (Введите сюда номер карты и утройте доход сейчас! Действительно 10 минут!!!), но опять же, вам может потребоваться браузер или актуальный JS движок.

Если же проверять страницу на JS вирусы, нужна база сигнатур вирусов JS скриптов, а где ее найти? Я честно говоря вам не смогу ответить. Можно начать составлять самому, но это все довольно трудоемко.

Открытое программное обеспечение и документация

По алгоритмам поиска и классификации вирусов есть различные статьи, например: Computer Virus Strate gies and Detection Methods (2008), The New Age of Computer Virus and Their Detection (2012), она могли конечно немного устареть с появлением новых технологий, но базовые принципы никуда не денутся.

Если вам интересно, как работают антивирусные программы, то можете почитать исходный код открытого антивируса ClamAv, есть энтузиасты которые написали на основе его баз сигнатур обертку PhpMussel или поискать на Github проекты по названию anti-virus, virus detection и т.д.

Выводы

Легко распознать все вирусы не получится - это очень комплексная задача и существует огромное количество способов сделать это.

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

Неплохой агрегатор существующих сервисов проверки Virustotal, в нем можно выполнять до 4 запросов в минуту бесплатно по состоянию на 2018 год и проверять сайт по многим базам одним запросом.

READ ALSO
добавление записи в БД из формы

добавление записи в БД из формы

есть таблица "prosto", в ней есть поля "b", "cart", "data", из формы по кнопке должны отправляться данные в эту таблицу, если дата добавляется, то для остальных...

100
Получить значение в JSON от процедуры на PL\SQL (БД Oracle) и распарсить его на PHP

Получить значение в JSON от процедуры на PL\SQL (БД Oracle) и распарсить его на PHP

Есть процедура procedure some_procedure(id in integer, data_json out varchar2) , которая берет некоторый параметр и возвращает значения в строке формата JSONя пытаюсь получить...

149
Ошибка PHP Warning: Invalid argument supplied for foreach()

Ошибка PHP Warning: Invalid argument supplied for foreach()

Был скрипт парсер, подгружал посты со стороннего сайтаВсе работало пока не перехал на другой хостинг

128
Uncaught SyntaxError: Unexpected token < на WordPress

Uncaught SyntaxError: Unexpected token < на WordPress

Был уже готовый сайт на WordPress с конструктором страниц и несколькими плагинамиНемножко изменил у себя на локальном сервере, залил на хостинг...

137