После событий на хабре возник вопрос: Как с таким бороться?

Главные вкладки

Комментарии

Аватар пользователя habralex. habralex. (не проверено) 24 января 2008 в 2:47

для тех кто не понял: обратите внимание, что вас разлогинило.
это самое безобидное, что можно сделать...

Аватар пользователя axel axel 24 января 2008 в 7:51

Любопытный эффект, пофиксил по-быстрому - блокируются изображения содержащие logout (интересно какие ещё вредные ссылки можно вызвать?) и не содержащие расширения. Больше не отлогинивает.

Но к хабрахабру это отношения не имеет.
В тему топика http://webplanet.ru/news/security/2008/01/23/habr_ddos.html

Аватар пользователя habralex habralex 24 января 2008 в 12:13

logout ты пофиксал, а вторую бяку? посмотри внутрь топика и на его рейтинг.

P.S. ты все пропустил. до ddos-а на хабре таким развлекались.

Аватар пользователя axel axel 24 января 2008 в 17:33

Это уже к модулю рейтинга нодов. Значит в нём не проверяется ввод пользователя, что печально. Для img блокировку сделал отдельным модулем (прикрепляю в аттаче, может кому пригодится).

Аватар пользователя axel axel 25 января 2008 в 16:13

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

Аватар пользователя Valeratal Valeratal 24 января 2008 в 14:06

мда, реитинг зашкаливает Lol
После хабра т оже подумал, о том что это же и в друпале вероятно осуществимо

Мда, а можно мне код (для изучения) по мылу ?

Аватар пользователя mityok mityok 24 января 2008 в 21:54

А если сделать обработчик вывода, который анализирует атрибут src для изображений и фильтрует все изображения, которые ссылаются на файлы вне каталогов тем и files ?

Аватар пользователя generator2003 generator2003 25 января 2008 в 2:11

mityok wrote:
А если сделать обработчик вывода, который анализирует атрибут src для изображений и фильтрует все изображения, которые ссылаются на файлы вне каталогов тем и files ?

А если изображение не с сайта а с фликра ?
Поидее ничто не мешает анализировать является ли прикрепляемый файл картинкой или нет

А как вообще это в деталях работает? Браузер просто так обрабатывает тэг image тупо обращаясь куда угодно?
Поидее так можно и куки воровать вызывая удалённый пхп скрипт или я не прав?

Аватар пользователя mityok mityok 25 января 2008 в 14:30

Нас, как я понимаю, в первую очередь интересует защита от вызова скриптов (в том числе и административных) на НАШЕМ сервере.
Соответственно, все пользовательские изображения должны быть в каталоге files, все изображения модулей и тем должны находиться в каталоге sites. Все обращения за изображением в другие каталоги должны быть пресечены как провокаторские.
Внешние ресурсы нас мало интересуют, хотя вполне возможна и такая атака - если у посетителя открыта сессия на другом сайте, код которого вызывается при помощи IMG.

А по поводу обработки тэга IMG - браузеру все равно, какой URI указан в атрибуте src - его задача обратиться по указанному адресу, поптыаться получить документ и если документ можно отобразить - то отобразить его. Т.е. если в атрибуте src указан правильно сформированный адрес - то браузер обратиться по нему.

Аватар пользователя cwer cwer 25 января 2008 в 20:50

Поидее так можно и куки воровать вызывая удалённый пхп скрипт или я не прав?
Не прав. Куки устанавливаются для домена

Аватар пользователя cwer cwer 26 января 2008 в 10:47

- А если изображение не с сайта а с фликра ?
Анализировать откуда изображение и запрещать все что не с файлс и темс

- Поидее ничто не мешает анализировать является ли прикрепляемый файл картинкой или нет
Конечно ничего. Но я что-то не припомню таких функций в пхп.

Аватар пользователя B.X B.X 27 января 2008 в 3:12

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

Аватар пользователя restyler restyler 27 января 2008 в 10:19

чтобы защитить и vote_up_down линки:
case 'process':
$strings_to_block = 'logout|vote_up_down';
return preg_replace("//iU", "[ИЗОБРАЖЕНИЕ $1 БЛОКИРОВАНО]", $text);
?>

Аватар пользователя Dan Dan 27 января 2008 в 12:15

В принципе этим способом можно запустить любой скрипт. Другое дело, что запустит его только привилегированный пользователь (правда узнает об этом опосля Smile когда зайдёт на страницу с фиктивным адресом (не сидите под рутом в *nix'ах и под админом в друпале! Smile

2B.X: При чём тут BBCode? Вот так это будет для BBCode:
[img]http://site.ru/logout[/img]

Какими ещё способами можно заставить браузер обратиться по нужному адресу (кроме JS)?