@phpclubru

Страница 24 из 956
Vadim
11.11.2016
08:30:04
двухсотый

dypa
11.11.2016
08:34:40
@confguru !!!

Grigori
11.11.2016
08:50:07
@miksir следует разделять понятия "виноват" и "соответствие требованиям". Если проблема несоответствия архитектуры текущим требованиям вызывает чувство вины - могу предложить лишь обратиться к психоаналитику.

Для меня это вопрос ответственности. Готова ли система к росту до 100 тысяч пользователей? Готова ли система к тому, что пользователей будет только 3 тысячи, и никогда не будет 100 тысяч? Ответы на эти вопросы отражаются в дизайне системы. В этом отличие продуманного дизайна от "херак-херак, и в продакшн" и overengineering.

Google
Grigori
11.11.2016
08:57:58
В крупных проектах собираются специальные собрания архитекторов, у нас это называется Team A meeting. На них все задают ответственному за проект каверзные вопросы "а что если". И вопросы, должен сказать, очень непростые.

спасают годы дискуссий в клубе :)

Kirill
11.11.2016
09:02:29
Интересно. А этот самый Team A meeting не превращается случайно в действо с целью потопить этого самого архитектора?

Т.к. "а что если" можно придумать очень много разных, в т.ч. очень маловероятных.

Pavel
11.11.2016
09:04:01
Интересно. А этот самый Team A meeting не превращается случайно в действо с целью потопить этого самого архитектора?
Это какое-то надрачивание на ЧСВ? =) В Нормальных проектах этим люди не занимаются.

Если человек с тобой работает плечом к плечу, то зачем его топить. Гораздо приятнее же когда атмосфера дружеская, чем пинание друг друга с целью показать кто больше параметров в функциях помнит.

Kirill
11.11.2016
09:06:43
Все очень сильно зависит от людей.

dypa
11.11.2016
09:19:54
всех вопросов не задаш же. рано или поздно выйдет архитектура не подходящая для проекта. что тогда?

Pavel
11.11.2016
09:22:11
"не подходящая" в каком смысле? Проект откажется запускаться?

> что тогда? тогда надо переходить на postgres ?

Alexandr
11.11.2016
09:59:35
avp скучно - у нас 200-й?

Madiyar
11.11.2016
10:00:08
avp скучно - у нас 200-й?
Алибек Капаров?

Alexandr
11.11.2016
10:01:47
Там же демоны на всех портах ?

Google
Madiyar
11.11.2016
10:04:40
благо не на само железо.

Pavel
11.11.2016
10:19:25
и кстати раз мы это затронули. если использовать пдо и сделать запрос вида $sql = '.... where id = :id'; $sth = $pdo->prepare($sql) $sth->bindParam(':id', $_GET['id'], PDO::PARAM_INT); считается ли это безопасным?)
Такие плейсхолдеры защищают только от одного типа инъекций - который возможен при парсинге запроса во внутреннюю сруткуру сервера БД. А если дальше этот запрос инициирует процедуры/триггеры которые что-то делают с пришедшими данными, то там возможна инъекция второго рода и надо экранировать вручную все равно

Pavel
11.11.2016
10:20:43
нет

данные всегда пробрасываются в параметры запроса как есть

"эранирование" убирается после того как сервер скомпилировал запрос.

это способ защищиться на этапе синтаксического разбора так сказать

Denis
11.11.2016
10:24:23
не понял. я думал что сперва идет экранивароние, потом шняга вставляется в строку и отдается субд. сама субд принимает уже нормальный запрос с экранированными данными, разве не так?

Pavel
11.11.2016
10:25:52
Если бы это было так, PDO не смог бы закешировать план запроса с плейсхолдерами

Ему туда параметры приходят отдельно

А так ты можешь длиннющий запрос прогнать миллион раз на разных данных, а скомпилирован и разобран он будето только 1 раз. Все последующие разы туда просто приходят новые параметры :p1 :p2 и так далее

dypa
11.11.2016
10:26:58
запрос приходит на сервер отдельно, данные для запроса приходят на сервер отдельно

Pavel
11.11.2016
10:27:54
У меня был тоже такой класс, который принимал массив параметров, экранировал их и через str_replace вставлял в запрос)

Denis
11.11.2016
10:29:53
короче надо разобратся как этот пдо работает и быть аккуратным

ведь тогда получается до того как биндить данные, их надо предворительно экранировать

Pavel
11.11.2016
10:30:41
нееет

Denis
11.11.2016
10:30:47
или я не догоняю

Pavel
11.11.2016
10:30:50
да он сам экранирует

Google
Pavel
11.11.2016
10:31:12
Точнее.. Он даже не экранирует, нету смысла это делать

Salavat
11.11.2016
10:31:12
Но на триггеры придет неэкранированный?

Pavel
11.11.2016
10:33:06
или я не догоняю
Короче забей, там все сделано просто и инкапсулировано. Подставляешь в биндинг голые значения и ни о чем не паришься.

Denis
11.11.2016
10:34:31
не могу я не парится если в триггеры попадут не экранированные данные

Dmitry
11.11.2016
10:35:25
Отсутствие проверки приходящих данных от клиента. Фильтровать данные
Классически неверный ответ. Данные не проверяются и фильтруются. Данные эскейпется в точки применения. Хорошо знание этого показыватся на моментах защиты от xss. Где мы будем эскейпить данные? На входе? На сохранении в базу?

Dmitry
11.11.2016
10:37:57
проверка - это действие дающиее ответ - да/нет ;)

Dmitry
11.11.2016
10:38:19
эскейп - это подготовка данных к применению

Salavat
11.11.2016
10:38:35
Pavel
11.11.2016
10:38:52
Правда некоторые например прогоняют входящий html через purifier и уже то что получилось кладут в базу

Dmitry
11.11.2016
10:39:28
кстати, а вот тут интересный вопрос. я прав что даныне экранируются при выводе. в бд мы храним оригинал?
Ну в общем да. Ибо данные - это данные, они могут понадобится где угодно и в каждом случае будет свой специфический эскейп

Salavat
11.11.2016
10:40:19
проверка - это действие дающиее ответ - да/нет ;)
Согласен, неправильно ответил, в этом случае.

Denis
11.11.2016
10:40:31
ну ок) значит в целом я правильно постуаю)

Google
Pavel
11.11.2016
10:40:42
Может нам сервис организовать, митап платных собеседований? ;)

Denis
11.11.2016
10:40:49
нахуй

?

Pavel
11.11.2016
10:40:58
Платишь денюжку, тебя собеседуют пять синьоров/архитекторов

Dmitry
11.11.2016
10:41:04
А еще есть click hijacking который часто с csrf путают

dypa
11.11.2016
10:41:21
@chebotarevp @miksir есть вопрос на посложнее, по субд mysql. только в гугл не следует подглядывать есть таблица с 2мя полями foo и bar, по одному (foo) построен индекс, по другому (bar) уникальный индекс есть 2 запроса INSERT INTO table (foo, bar) VALUES (NULL, NULL); INSERT INTO table (foo, bar) VALUES (NULL, NULL); что произойдет при выполнении второго запроса?

Salavat
11.11.2016
10:42:33
К XSS не относится. Куки ты как собрался подделывать. Токен - это защита от CSRF, ни к чему больше отношения не имеет.
Беру плагин - редактор куки и правлю нужные мне вещи. Нет? Все же зависит от того - как выставлены куки, если не http-онли, то значит я могу их поправить?

Dmitry
11.11.2016
10:42:39
налы вроде в уникальности не учитываются

Denis
11.11.2016
10:42:57
null = nul is false)

Dmitry
11.11.2016
10:43:14
Salavat
11.11.2016
10:43:39
Dmitry
11.11.2016
10:44:04
Это кто так делает? ;) В куках ID сессии или шифрованная кука.

dypa
11.11.2016
10:46:07
налы вроде в уникальности не учитываются
я не знал этой особенности когда проходил последнее собеседование. было забавно. плохо то - что это был один из основных вопросов в компании N.

Salavat
11.11.2016
10:46:14
Это кто так делает? ;) В куках ID сессии или шифрованная кука.
Три года назад точно так делал один из сайтов новостных в Казани )

Dmitry
11.11.2016
10:48:28
я не знал этой особенности когда проходил последнее собеседование. было забавно. плохо то - что это был один из основных вопросов в компании N.
Ну в общем я тоже не помню этих строчек в доке... скорее предположил в виду того, что нал - это "не значение"

Три года назад точно так делал один из сайтов новостных в Казани )
Ну печально, чо ;) Токен тебя в таком случае никак не спасет. Атакующий подменит куку, получит новый токен и привет.

dypa
11.11.2016
10:49:41
вообще интересно было бы услышать сложные вопросы которые поставили вас в тупик на собеседовании

Denis
11.11.2016
10:50:25
ну тут учитывать кого поставил в тупик)

Dmitry
11.11.2016
10:50:32
М.... почему все используют btree и редкто используют hash индекс, и когда его стоит использовать ;)

Google
Denis
11.11.2016
10:50:57
меня один нубский вопрос поставил) но это не значит что вопрос был сложным

Dmitry
11.11.2016
10:51:07
Собеседование было по скайпу, пришлось погуглить ;) Просто как-то не использовал hash индекс никогда...

Pavel
11.11.2016
10:51:44
вообще интересно было бы услышать сложные вопросы которые поставили вас в тупик на собеседовании
Я обычно напарываюсь на впоросы из серии "случается раз в 10 проектов"

Dmitry
11.11.2016
10:52:17
Ну да, не работает на сравнениях и если индекс составной - все поля должны участвовать в запросе

dypa
11.11.2016
10:53:11
Я обычно напарываюсь на впоросы из серии "случается раз в 10 проектов"
мне в свое время так попался вопрос про lazy loading сервисов в symfony. когда я спросил нафига он вам - ребята рассказали что у них тормозило апи на jms бандлах и вот именно это их спасло.

Dmitry
11.11.2016
10:54:00
При работе с событиями полезно

Ну и вообще... зачем нам поднимать и инициализировать какой-то сервис, который при иницализации куда-то с коннектами лезет и т.п., если в текущем контексте запроса этот сервис вызван не будет

Pavel
11.11.2016
10:56:28
А в чем заключается вопрос, я не понял?

Зачем нужен lazy loading ?

dypa
11.11.2016
10:57:03
как сделать lazy loading сервиса в symfony

примерно так звучал вопрос

Dmitry
11.11.2016
10:57:19
почитать документацию ;)

Salavat
11.11.2016
11:00:46
Не в тему общения. Но хотел вот что спросить. Насколько достоверно по нескольам файлам кода - определить какому фреймворку принадлежит код или CMS? Именно по исходникам

Dmitry
11.11.2016
11:01:27
зависит от фреймворка

Salavat
11.11.2016
11:01:36
Ну вот у Yii есть такие элементы?

Dmitry
11.11.2016
11:01:43
Та, сервис локатор

Страница 24 из 956