All streams
Search
Write a publication
Pull to refresh
155
0
Дмитрий Науменко @SilverFire

Yii Framework core developer

Send message
Точно есть бан для плохих дедушек. А для плохих внуков есть?
Тогда просто ЛС, а не в трекер. Уведомления об ЛС падают на почту по умолчанию
Хм, не ты ли мой дедушка? :) Мне дедушка написал перед НГ, что выбрал подарок, уточнил мой адрес и с тех пор не заходит :(

А по сути — идея рассылки очень правильная. Уведомления от приложений в Хабрацентре на почту то не приходят.
Еще раз пожалуйста, внучек. Расскажи вкратце о впечатлениях, как сходишь, пожалуйста :)
В любом крупном проекте найдется хорошая стопка issue или PR, которые висят месяцами или даже годами. Залипают обычно некритичные и часто сложновоспроиводимые проблемы, улучшения, сломы обратной совместимости, неоттестированные опасные PR. Рассматривая новый PR всегда перебираешь варианты: а нужны ли эти изменения, не дублируют ли они что-то существующее, не сломается ли чего, не зарыт ли тут слом обратной совместимости, придется ли менять документацию, и так далее.

Я раньше этого всего до конца не осознавал и сам думал «Блин, ну не уже ли нельзя смёржить то, ничего сложно нет», но после присоединения к Core-team начал невольно смотреть на это немного иначе. Каждый день — это поток изменений, комментариев, новых задач и PR. Случайные люди не видят этого, ведь кто захочет просто так получать 50+ уведомлений каждый день, и вчитываться в них и от всей души стараться решить чью-то проблему?

Я однажды услышал версию, что это происходит из-за плохо организованной работы в команде и если принудительно раздавать задачи и контролировать их исполнение — все будет чётко и быстро. Утверждение толковое, но в Open-source оно не будет работать. Какую бы задачу я не взял, займет она у меня 10 минут или 5 часов, я это буду делать добровольно, с удовольствием, целью помочь сообществу и за идею. Такое принудительно не работает.
Отличная статья, спасибо. От себя добавлю, что нормальные описания PR или Issue очень важны. Есть много статей о том, как правильно составлять баг-репорты, но я представляю идеальный баг-репорт так:

1. Суть проблемы;
2. Минимальный код для воспроизведения и описание окружения;
3. Текущий результат;
4. Ожидаемый результат.

Навскидку несколько свежих примеров неудачных репортов: 1, 2, 3. В одних информации слишком мало и приходится догадываться, а в других она не помещается на 3 экрана и желание вчитаться быстро пропадает. В действительности, чтобы найти золотую середину, достаточно задать себе несколько вопросов: «Этой информации достаточно для воспроизведения проблемы без фантазирования?», «Я оставил только тот минимум кода, который относится к проблеме и необходим для воспроизведения?».
В смысле уже есть и можно писать в ЛС? Или будет какая-то специальная процедура?
О черезмерно толстых моделях писал nepster09 в своей недавней статье Разработка приложений на Yii2 без опыта — прямой путь в АД, но по моему мнению, проблема сводится к сугубо архитектурной и решается очень аккуратно, хороший пример Tairesh и показал.

Такая структура моделей может быть особенно полезной, когда разные типы одного объекта требуют разных правил валидации или специфического поведения. Описывание особенностей разных типов одной модели в одном классе быстро превращает его в сложноподдерживаемое месиво. А если еще и добавить сценарии — можно плакать. Проверено :)

Что касается практики, я бы добавил, что создание объектов базового класса Car не всегда хорошая идея. Я вижу две стратегии:

1) Car — суперкласс. Есть базовые правила валидации того, что есть у всех, типа
[['type', 'name'], 'required']
, но создание машин через этот класс невозможно, обязательно использовать уточненные классы. Это хорошо, когда каждый тип гарантированно имеет что-то свое, чего принципиально не может быть у базового и не пересекается с другими. Например, у спортивной машины, наверняка, не будет сцепного устройства для прицепа :)

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

Открытым может оставаться вопрос о правильном наследовании правил валидации и возможностям комбинирования похожих свойств, но
это может сильно отличатся в разных предметных областях.
Новая Почта феерически прошрафилась. Прошел квест по получения подарка — пройди квест-подарок! Рад, что тебе понравилось! С НГ, внучек! :)
Софт такого рода — отличная вещь для дебага веб-запросов. Но Charles — не мой выбор. Мне больше понравился бесплатный аналог Fiddler.

Работал с ним хоть и не очень долго, но в нем есть все что нужно — есть те же фильтры, можно подменять ответы, поддерживает HTTPS, может перехватить запрос и ответить на него, не обращаясь к реальному серверу. На Linux работает под Mono, но с периодическими вылетами и мелкими глюками. Не нашел ничего нативного для линукса, что умеет все то же и работает лучше (посоветуете?).

P.S.: Redmadrobot, почему вы отдали предпочтение Charles?
Нет, скорее:

$array = [1,2,3,4,5];
next($array);
var_dump(current($array)); // 2

foreach ($array as $item) {
    continue; // iterate over array
}

var_dump(current($array)); // 2. В PHP 5.5 будет FALSE


3v4l.org/nf3Cg
Для проверки, является ли переменная — функцией, которую можно вызвать, предпочитаю использовать instanceof

$x = function () { 
    print(1); 
};

if ($x instanceof \Closure) {
    call_user_func($x);
}
Присоединяюсь к вопросу. Вы будете знать HTTP referer, где была размещена ссылка (какой-то форум) и IP жертвы.
Кого вы сможете привлечь к ответственности? Пользователя форума, который опубликовал ссылку, сидя за китайской прокси?

ИМХО, жертве реальнее привлечь вас к ответственности, так как данные были слиты в следствие выполнения вредоносного кода на вашем сайте.
mao1985, действительно, тут можно маневрировать с термином «уязвимость». Нужно еще чуток заморочиться, чтобы загнать жертву на страницу оплаты, где она доведет транзакцию до конца, но как proof-of-concept — очень даже хорошо.

при подмене ресурса фишинговым сайтом

Ведь речь идет не о подмене iPay фишинговым сайтом. Достаточно отправить к вам пользователя с определенными данными.
Тогда мне непонятно, почему уязвимости, которые очевидно угрожают безопасности платежных карт болтаются 3 недели в очереди?
проведена оценка потенциальной угрозы

Потенциальная угроза очевидна — слив номера карты, срока действия, cvv кода.

Вы говорите, что:
методов их эксплуатации не выявили

Как по мне, метод — это последовательность шагов, которые нужно выполнить, чтобы добиться результата. Результат — угон данных карточки. Шаги со скринами в статье. Вы хотите сказать, что поле комментарий не было подвержено уязвимости XSS?
Уважаемый mao1985! По моему мнению, ваш ответ наполнен вежливым текстом, но лишен здравого смысла.

dinikin очень детально и наглядно продемонстрировал использование уязвимости, но мне не понятно что вы имели ввиду под
Мы еще раз оценили потенциальные угрозы и методов их эксплуатации не выявили

У ребят только началось весенее обострение, погодите.
Вон еще одно подтверждение.

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Registered
Activity