Pull to refresh

Comments 26

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

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

это, конечно, оффтопик, но всё же. спасение утопающих — иногда всё же является делом самих утопающих.
Золотое правило работы с данными — хранить пользовательский ввод в базе именно в том виде, в котором он был отправлен. Поэтому, всю фильтрацию следует производить на этапе вывода пользовательских данных на страницу.

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

Новое золотое: Фильтрацию от вредного кода нужно производить до ввода
тобишь:

Новое золотое правило: Фильтрацию от вредного кода нужно производить до записи в базу
Это правило вытекает из того, что невозможно однозначно судить, вредоносный код это или нет. Например, код может быть просто нежелательный для одной роли, и разрешенный для другой.
Очень разумное замечание. Не подумал.
Вторая причина — возможность модификации данных между моментом загрузки их из базы и выводом на страницу. Упрощенно, отображение ноды выглядит так:
1. Загрузить ноду и бд.
2. Позволить другим модулям пофлиять на объект ноды.
3. Вывести ноду на экран.

Если вы в прошлый раз перед сохранением этой ноды уже отфильтровали ее контент, то никто не может гарантировать, что какой-то модуль перетрет ее контент на втором шаге так, что вылезет XSS.
Фильтрацию от вредного кода нужно производить путем элиминации носителей вредного кода :)
Золотое правило работы с данными — хранить пользовательский ввод в базе именно в том виде, в котором он был отправлен. Поэтому, всю фильтрацию следует производить на этапе вывода пользовательских данных на страницу.


Я с Друпалом не знаком, но возникает вопрос — а не слишком ли накладно фильтровать данные каждый раз при выводе? Не будет ли это грузить сервер при большой частоте посещений?

Прошу меня извинить, если я чего-то неправильно понял.
Так и есть поэтому тут дело такое, у каждого свой подход, я фильтрую сразу так проще и удобнее и отпадает бесполезная постоянная фильтрация при выводе.
Пока вы будете фильтровать на выходе XSS, получите SQL injection на входе.
Можно кешировать готовые обработанные данные, это не проблема.

Но, имхо, все-таки из-за такой универсальности друпал и страдает не очень высокой производительностью
Да, именно отфильтрованный контент и лежит в кеше, поэтому тяжелые фильтрации выполняются минимум раз. Все остальное — необходимое зло.
UFO just landed and posted this here
… и либо замедляет выдачу — при выполнении на сервере, либо сужает круг допустимых браузеров — при выполнении на клиенте.
UFO just landed and posted this here
Кэширование, кластеры… Это не панацея для всех применений.
Ребят, неужели не запомнить?
— Всё что кладешь в БД обрабатывай mysql_real_escape_string (для MySQL)
— Всё что получил от третьего лица, и хочешь вывести, обрабатывай htmlspecialchars при выводе

Неужели ради этого пишутся такие длинные статьи?
вам конечно просто и понятно, а вот лично мне было интересно почитать к чему может привести та или иная оплошность
И как вы собираетесь отфильтровать таким способом текст с html разметкой?
Мне кажется, у Вовы и без всякого кросс-сайт скриптинга есть доступ к базам ФСБ ;-)
Это ж сколько старого кода теперь перелопатить надо? :)
Но, спасибо!
терзают меня смутные сомнения, что я знаю какая сука минусует.
уважаемый, мы с вами и вашими шестерками давно разобрались.
Использование t() и l() — это вообще must-use функции для вывода любых текста и ссылок. Они еще и от возможных проблем с кодировками избавляют, а уж если сайт в потенциале может быть локализован на другие языки, то их отсутствие может обернуться +NN тыщ человеко-часов… проверено на личном опыте, так сказать :)
Sign up to leave a comment.

Articles