Как стать автором
Обновить
196
-8
Павел @ProgerXP

Вольный программист и дизайнер

Отправить сообщение
Благодаря ей даже если ваш провайдер украл вашу авторизацию, пока вы без шифрования,…

Так… к вам ещё не пришли? :) в свете habrahabr.ru/post/222455/#comment_7575857
Многие CMS позволяют вставлять JS в материалы/шаблоны в админке, что вы видите в этом плохого?

В этом — ничего, и это именно тот случай, когда нужно использовать сырой вывод. Но это один из немногих use case в сравнении с другими — вывод отдельный компонентов страницы (заголовок, имя, телефон и т.д и т.п).

Что будет, если вы напишете JS-код в WYSIWYG-редакторе (WordPress например)? Правильно, он будет выведен как текст. Точно так же вы указываете шаблонизатору, что вы знаете что делаете и что это сырой HTML, который вы прямо интерполируете в тело страницы.

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

Не обязывает, зато 100% предотвращает XSS во всякого рода . Экономия — 5 байт на каждую кавычку, что несерьёзно.

Появляются еще и апострофы, которые могут быть и частью аттрибута.

… и они тоже должны быть экранированы.

Во-вторых, аттрибуты событий, аттрибут style.

… в которых они также экранируются, так как являются обычными атрибутами тега.

В-четвертых, a href опять же как бы не вышло двойное экранирование амперсанда (urlencode и html).

URL-encoding и HTML никоим образом не пересекаются. Если амперсанд — часть значения переменной (типа ?field=value) — он будет заменён на %26. Если часть URL (?smth&smth) — будет заменён на & что есть верное поведение:
<a href="?a&amp;b">


Возьмите W3C validator, вбейте туда:
<!DOCTYPE html>
<html><body>
<a href="a.html?b&c">
</body></html>


И получите:
 & did not start a character reference. (& probably should have been escaped as &.)
Никто не мешает усложнить логику сеттеров/геттеров. Можно например написать getTitleAttribute(), который будет вызван при попытке доступа к $model->title;

… а потом искать, где в коде этот метод вызывается напрямую, где косвенно. Знаю, проходили. Эта проблема, кстати, в других частях L4 еще глубже, так как есть мнеого способов сделать одно и то же — например:
В isFillable мы проверяем несколько разных способов, которыми может быть обработано массовое назначение. Сначала мы смотрим, установлена ли модель как unguarded, и если это так, то разрешаем назначение. Далее мы проверяем, находится ли атрибут в массиве fillable, тогда мы разрешаем назначение еще раз. Затем вызывается isGuarded, который проверяет, находится ли ключ в массиве guarded, или guarded содержит знак звездочки array('*') (который ставится по умолчанию), тогда мы не разрешаем массовое назначение. Наконец, если fillable пустой, мы возвращаем true, если ключ не начинается с подчеркивания, которое используется для скрытых атрибутов, как это принято и в Rails.

Если находится unfillable-ключ, то мы проверяем, является ли модель totallyGuarded. По сути это значит, что если fillable пустой и guarded содержит знак * (по умолчанию), тогда возникает исключение MassAssignmentException. Это значит, что если вы не измените свойства fillable или guarded, то при попытке вызвать fill будет возникать исключение MassAssignmentExceptions.
. Все это сильно затрудняет поддержку проекта.

Вообще-то PHP-дэвелопер пишет блэйдовский шаблон ПОСЛЕ того, как его сверстали верстальщики.

… который, конечно, больше никогда не меняется. Такой дзэн.
Действительно, странная картина получается: www.google.ru/trends/explore#q=%2Fm%2F060kv%2C%20Javascript%2C%20Java&cmpt=q
Уж что-что, а JavaScript за последние годы только набирает популярность огромными темпами.
если заведомо известно, что безопасное экранирование побьёт вывод?

Совсем даже не известно. Единственный случай, когда пострадает вывод — это описанный вами вывод в JS. Часто вы генерите JS в шаблоне? Если да — у вас ошибка в архитектуре. Если нет — автоэкрарование [HTML] для вас логичный выход. Для оного достаточно экранировать всего три символа, если совсем лень
< & "
Как в Handlebars, да. У Тейлора была отличная возможность сделать будущие проекты безопаснее (хотя бы по части XSS), но он почему-то решил продолжить эту традицию и сделал все наоборот. Никак для «обратной совместимости» с v3…
Как обычно, промахнулся веткой с ответом.
Об этом я и говорю, если добавлять два дня — сам проект выходит тоже на 2-6 дней по длительности. В моем случае это месяц и больше. Наверное, для лендингов достаточно, но профинансирует ли такая деятельность работу целой команды, оставив запас и для руководителя?
Бывает, конечно же, и сроки срываем. Но я обычно заказчику говорю на день-два срок больше, нежели обещает кто-то из фрилансеров.

У вас, видимо, очень простые проекты (как и следует из статьи дальше) — мне часто приходится добавлять одну-две недели, а иногда месяца к планируемому времени и то в итоге обычно получается с натяжкой.
Меняет в том смысле, что 10 лет спустя не всплывет, что вы когда-то искали «yellow submarine скачать мп3 бесплатно». Ну или еще что-то безобидное :)

Даже если на странице стоит счетчик, он максимум что сможет сделать — связать ваши посещения с другими через постоянную cookie, которую выдал вам где-то на другом сайте. Если у вас стоит умолчательная настройка приватности, по которой куки хранятся вечно — можно связать вместе довольно внушительный временной интервал. Я лично всегда выставляю время хранения кук до закрытия браузера, поэтому «мп3 бесплатно» в поиске и на сторонних сайтах с GA связать можно, а то что было вчера или завтра — уже нет.

Ну, и естественно нужно всегда выходить из Gmail и прочих акков Google, т.к по ним как раз можно связать ваши действия персонально с вами и без всяких кук. У меня для этого отдельный браузер (Chrome ;P), где я постоянно залогинен в google, но кроме него ничем не пользуюсь.
Это чудесно! Без зависимостей, 6,5 Кб minified. Спасибо за информацию!
На мой взгляд анимации (да и не только они) в CSS слишком многословны, плюс вы не сможете добавить туда условий и очередей. HTML изначально — гибридный язык контейнеров (взять те же микроформаты) — приходиться свыкнуться с мыслью, что все больше и больше визуальных моментов будут декларироватьс в том числе в разметке.

Нет, я не за style — но для последнего специально придуман CSS.
KolibriN — это максимальная сборка.

На две дискеты? :)
Какое у этого чуда охлаждение?
Сколько у него кулеров и где? Шумят? По моим впечатлениям везде где стоит i7 имеет место чересчур «активное» охлаждение. Даже в моем ноуте (Sager Np9750).
Web интерфейс конечно перегружен немного, но я в него захожу редко,

А чем вы тот же торрент запускаете? Все через консоль?
Полгода назад выбирал между Synology, Buffalo и Qnap. В итоге купил последний (TS-219), так как он легко рулится через ssh. Очень похож на разобранную модель — VPN из коробки, DLNA, фото/видео/прочие станции и т.п. Покупкой доволен, разве что с веб-интерфейсом комрады с Тайвани подкачали — слишком гламурный и медленный. А так — работает уже 3 месяца без остановки, даже Dovecot туда поставил, чтобы не хранить компромат во вражеском лагере. Кстати, spindown тоже есть — так что коробка тихая.
Я программист, а не дизайнер :)

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность