|
|
|
| Тема с данным вопросом успешно потонула, а мыслей хоца.
Итак. Условие: форум позволяющей вставлять изображения с тругих сайтов и автоматически опознающий зарегистрированных посететелей.
Как вариант: пишем в куку логин и хеш (пароль+юзерагент). Таким образом, если даже злоумышленник попер куки, то он должен иметь в точности такой же юзерагент.
В случае открытых исходников - сводится на нет. Еще идеи есть? | |
|
|
|
|
|
|
|
для: Loki
(14.08.2006 в 23:52)
| | Если бы безопасность была превыше всего, я бы все изображения закачивал на сервер (попутно, естественно, проверив всячески - на mime-тип, например), и выводил бы уже свои, а не посторонние. Чревато жуткими тормозами. | |
|
|
|
|
|
|
|
для: Киналь
(15.08.2006 в 00:06)
| | Ну это хорошо рассуждать сидя на форуме по программированию, а форум, например, по фотографии попросту ляжет:) Или его положат, заставив тянуть к себе и проверять свопы от винды:) Хочется понять что я упустил, если вообще у этой задачки есть решение. | |
|
|
|
|
|
|
|
для: Loki
(15.08.2006 в 00:14)
| | >Хочется понять что я упустил, если вообще у этой задачки
>есть решение.
Абсолютно верного - точно нет:) Просто в силу того, что "Написанное одним человеком может быть понято другим". Перефразируя: как ни защищай, захотят - сломают. И весь вопрос в соотношении усилий и результата. | |
|
|
|
|
|
|
|
для: Киналь
(15.08.2006 в 00:22)
| | Все-таки хочется найти хоть какое-то решение: может использовать я его и не стану, но в голове держать буду:) | |
|
|
|
|
|
|
|
для: Loki
(14.08.2006 в 23:52)
| | тогда уж login и хеш(сессионный ключ)
где сессионный ключ=remote_addr+forwarded_for+user_agent+random, считается в момент авторизации. | |
|
|
|
|
|
|
|
для: Trianon
(15.08.2006 в 09:25)
| | Если сделать так, то смысла что-то хранить в куках вообще нет, так как по этим данным идентифицировать пользователя можно только в течение сессии. А для этого уже существует механизм сессий. | |
|
|
|
|
|
|
|
для: Loki
(15.08.2006 в 10:01)
| | На самом деле онлайн-сеанс может и превышать время сессии.
Но допустим для простоты, что у нас сеанс=сессии.
Вы же хотите защититься от XSS-перехвата в течение сессии? | |
|
|
|
|
|
|
|
для: Trianon
(15.08.2006 в 10:03)
| | Нет. По условиям задачки на форуме - автологин. То есть все необходимые данные для авторизации храняться у куках. Вопрос в том, легко ли эти куки спереть, и как сделать чтобы злоумышленнику их было труднее использовать? | |
|
|
|
|
|
|
|
для: Loki
(15.08.2006 в 10:07)
| | Прошу прощения... проглядел.
Если на формуме автологин, то о какой безопасности вообще может идти речь?
Аутентифицируют-то не человека, а машину. | |
|
|
|
|
|
|
|
для: Trianon
(15.08.2006 в 10:21)
| | Вот и встает вопрос: как опознать конкретную машину?
Ничего точнее юзерагента я пока не придумал... | |
|
|
|
|
|
|
|
для: Loki
(15.08.2006 в 10:29)
| | Ответ: Внутри сессии - по аспектам человека, открывшего сессию. Вне сессии - никак. :( . Уж если IP неуникален, что говорить об UA, который повторяется куда чаще IP | |
|
|
|
|
|
|
|
для: Trianon
(15.08.2006 в 10:37)
| | Эх:(
Ладно... пошел ломать форумы:) | |
|
|
|
|
|
|
|
для: Loki
(14.08.2006 в 23:52)
| | Хм... вообще если не лениться, то от любой XSS можно защититься, просто многие разработчики плюют на это дело. Можно так всё обставить, что мышь не проскочит. | |
|
|
|
|
|
|
|
для: cheops
(15.08.2006 в 12:23)
| | хорошо, а как отловить скрипт? Тут подсмотрел варианты обхода фильтров:
<img src=javascript:alert()>
<img src=vbscript:AleRt()>
<img src=JaVasCriPt:alert()>
<img src=" javascript:alert()"> (пробелы до слова javascript)
<img src=javascript:alert()>
<img src=javascript	:alert()>
<img src=javascript
:alert()>
<img src=javascript
:alert()>
<img src="javascript :alert()"> (перед двоеточием - символ табуляции)
<img src="java scri
pt:ale rt()"> (внутри слова javascript - символ табуляции и возврат каретки)
|
Пока внятного решения как все это проверить у меня нет... | |
|
|
|
|
|
|
|
для: Loki
(15.08.2006 в 13:34)
| | Пардон.... я так понял, предполагается, что html-код всё ж таки под контролем. | |
|
|
|
|
|
|
|
для: cheops
(15.08.2006 в 12:23)
| | А если конкретней?
Исходная постановка, как я понял, такая.
На сайте стоит автологон - аутентифицирующая информация передается браузером из кукисов - как в этом форуме.
На страницах сайта также нужно формировать <img src=..> ссылки на чужие изображения.
Возможно ли реализовать это без необходимости транслировать траффик изображений через сервер сайта, не подвергая опасности перехвата кукисов серверами источников чужих изображений? | |
|
|
|
|
|
|
|
для: Trianon
(15.08.2006 в 14:35)
| | совершенно верно.
проверил на нескольких форумах - конструкция [img]javascript:alert('Превед!')[/img] приводит к желаемому результату.
Судя по всему, придется проверять ссылку на наличие вызова яваскрипта, символов &, % и задавать кодировку документа (к вопросу о следовании стандартам:) | |
|
|
|
|
|
|
|
для: Trianon
(15.08.2006 в 14:35)
| | Я вот чего не понимаю, ссылки у нас начинаются с http://, всё что не начинается с http:// от лукавого и работать не будет по нормальному в любом случае, ставим опержающую проверку, равено ли начало ссылки http и с java начинаться у нас уже ссылка уже не может. | |
|
|
|
|
|
|
|
для: cheops
(16.08.2006 в 12:24)
| | ссылка может быть на ftp, maito, nntp а может быть и вообще относительной. | |
|
|
|
|
|
|
|
для: Loki
(16.08.2006 в 13:00)
| | Хм... ну для изображений это редкость, а относительные ссылки вообще не по делу использовать... хотя согласен, защититься гораздо сложнее, чем выдумать какую-нибудь каверзу. | |
|
|
|
|
|
|
|
для: cheops
(16.08.2006 в 13:08)
| | >ну для изображений это редкость
Опять судите со своей колокольни - для программистского форума - редкость, для дизайнеров/фотографов/художников - обычное дело.
пока что остановился на проверке наличия строк "javacsript:" и "vbscript:", а так же замене амперсандов... вроде как этого достаточно. | |
|
|
|
|
|
|
|
для: Loki
(16.08.2006 в 13:13)
| | Хм... ну протоколов высокого уровня не так много - можно пребрать начинается ли ссылка с http, ftp, mailto, nntp... | |
|
|
|
|
|
|
|
для: cheops
(16.08.2006 в 22:37)
| | а относительные на что проверять?:) | |
|
|
|
|
|
|
|
для: Loki
(16.08.2006 в 23:14)
| | А че, пользователям нужно ссылаться на ваши ресурсы через относительные пути? =)) | |
|
|
|
|
|
|
|
для: Loki
(16.08.2006 в 13:13)
| | для тега [img][/img] можно сделать проверку та тип файла, то есть все кроме jpg, gif ну и чего там для дизайнеров/фотографов/художников - обычное дело. | |
|
|
|
|
|
|
|
для: Lelik
(17.08.2006 в 02:03)
| | Для этого файл придется загрузить. Так что этот вариант отпадает. | |
|
|
|
|
|
|
|
для: Loki
(17.08.2006 в 09:17)
| | Хм... можно улучшить анализатор URL, если использовать parse_url(), она значительно облегчает построение защиты... | |
|
|
|
|
|
|
|
для: Loki
(17.08.2006 в 09:17)
| | Зачем загружать, просто когда преобразововать теги img, делать проверку на 3 последних символа, substr($img, "jpg", -3). в таком роде... | |
|
|
|
|
|
|
|
для: Lelik
(17.08.2006 в 15:00)
| | lavascript:alert('превед!'); //.jpg | |
|
|
|
|
|
|
|
для: Loki
(17.08.2006 в 15:26)
| | да, не подумал... | |
|
|
|
|
|
|
|
для: Lelik
(17.08.2006 в 15:00)
| | я вот чего додумал, в проверку включить кроме substr($img, "jpg", -3), substr($img, "javascript" !== false), и т.д. | |
|
|
|
|
|
|
|
для: Lelik
(17.08.2006 в 19:25)
| | Тогда отсекаются URL вида http://www.site.ru/dec/javascript/index.php. | |
|
|
|
|
|
|
|
для: cheops
(17.08.2006 в 22:25)
| | a javascript для запуска сценария должно в начале писаться | |
|
|
|
|
|
|
|
для: cheops
(17.08.2006 в 22:25)
| | >Тогда отсекаются URL вида http://www.site.ru/dec/javascript/index.php.
тогда проверяйте - наличие
1. http://
2. www.
если нет то на первые символы
javascript и тому подобная хрень... | |
|
|
|
|
автор: Join (17.08.2006 в 04:32) |
|
|
для: cheops
(15.08.2006 в 12:23)
| | Не согласен.
Идиальной защиты нет, всё что создал человек можно взломать! | |
|
|
|
|
|
|
|
для: Join
(17.08.2006 в 04:32)
| | С этим никто не спорит, только ломать возможно придётся не через XSS, а через что-то другое. | |
|
|
|