PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (98): « 1 [2] 3 4 5 6 7 8 9 ... » В конец

> Найдено сообщений: 1465
teddy Отправлено: 22 Апреля, 2016 - 20:27:04 • Тема: PHP 7 Использование контроля скалярных типов • Форум: Объектно-ориентированное программирование

Ответов: 28
Просмотров: 4536
Prizma пишет:
у меня включен строгий режим, нет ошибок.

А должны быть. Может все таки не включен? Или у нас разные понятия о строгом режиме...

Prizma пишет:
Я хочу, чтобы экземпляр класса Product было невозможно создать, если продукт в базе не найден

1. Если есть класс с доступным конструктором как у вас, возможность создать экземпляр не пропадет.

2. У вас метод issetProduct не статичный, соответственно экземпляр вы создаете в любом случае, лишь с той разницей, что бросаете исключение если продукт не нашелся в БД. Не нужно себя обманывать. Кроме того, Product никак не должен брать на себя за подобную ответственность. Ничего не мешает сделать проверку по идентификатору вне Product и там же определить, надо ли создавать экземпляр.
teddy Отправлено: 22 Апреля, 2016 - 19:52:47 • Тема: PHP 7 Использование контроля скалярных типов • Форум: Объектно-ориентированное программирование

Ответов: 28
Просмотров: 4536
Prizma пишет:
Что вы думаете о такой реализации

Думаю, что вы используете не подходящий инструмент.

1. При включении строгого режима получите ошибку из за попытки передать в качестве параметра строку похожую на число для int параметра.
2. Если тип извлекаемых данных имеет значение, установите опции PDO::ATTR_EMULATE_PREPARES и PDO::ATTR_STRINGIFY_FETCHES в false, остальное PHP сделает за вас.
3. Код конечно же ужасен, но видно, чего вы хотите. В принципе LIME сказал чего гуглить. Но сходу все эти солиды и мапперы будет сложно понять. Ниже приведу более простую реализацию, для новичка в таких делах вполне сойдет.

PHP:
скопировать код в буфер обмена
  1.  
  2. $dbh = new PDO('mysql:host=localhost;dbname=shop', 'username', 'password', [
  3.     PDO::ATTR_EMULATE_PREPARES  => false,
  4.     PDO::ATTR_STRINGIFY_FETCHES => false
  5. ]);
  6.  
  7. class Product
  8. {
  9.     private $name, $price;
  10.        
  11.     public function __set($property, $value)
  12.     {
  13.         $this->$property = $value;
  14.     }
  15.        
  16.     public function getName() : string
  17.     {
  18.         return $this->name;
  19.     }
  20.        
  21.     public function getPrice() : int
  22.     {
  23.         return $this->price;
  24.     }
  25. }
  26.  
  27. $products = $dbh->query('SELECT name, price FROM products');
  28. $products->setFetchMode(PDO::FETCH_CLASS, 'Product');
  29. foreach ($products as $product) {
  30.     var_dump($product->getName(), $product->getPrice());
  31. }
  32.  

Это просто пример, думаю идея понятна и сможете подпилить под свои нужды.
teddy Отправлено: 06 Апреля, 2016 - 21:31:15 • Тема: Создать модуль автоаукциона • Форум: Работа

Ответов: 1
Просмотров: 710
Если бюджет не менее 3.000$ - обращайтесь, обсудим Улыбка
Контакты скинул в ЛС
teddy Отправлено: 02 Февраля, 2016 - 19:17:29 • Тема: Вопрос о построении вида в Zend • Форум: Вопросы новичков

Ответов: 4
Просмотров: 206
imedia пишет:
Быть может вам известна ситуация когда ты застрял и не можешь сдвинуться с мертвой точки, такие люди меня поймут.

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

imedia пишет:
Не могу понять почему выводится только шаблон, и вообще не могу найти инфы чем шаблон от вида отличается, быть может подскажите?

Шаблон это такой же экземпляр Zend\View\Model\ViewModel как и тот, что вы возвращаете из экшена. Только он создается не явно, а самим фреймворком. В контроллере доступен в качестве плагина layout, к которому вы и обращаетесь.
Это своего рода рутовый(root) view, к которому так же не явно как дочерний прицепляется экземпляр того ViewModel, который вы возвращаете из экшена.

Для рутового вью вы задали алиас шаблона layout/layout. Это означает, что в качестве повторяющегося шаблона будет использован тот файл, который соответствует записи layout/layout в конфиге. То есть __DIR__ . '/../view/layout/layout.phtml'.

Теперь, для того, что бы отобразить дочерний шаблон, нужно его отрендерить в родительском шаблоне(в файле, который соответствует layout/layout).
По умолчанию каждый экземпляр ViewModel имеет название content (в фреймворке именуется как captureTo). Используя это название, можно отрендерить соответствующую ViewModel.

Полагаю, что в файле, который является корневым шаблоном, просто не рендерится ViewModel. Напишите echo $this->content; в основом шаблоне.
Если ничего не изменится, то скорее всего armancho7777777 прав, ваш шаблон пуст. Ну или кто то поменял название по умолчанию для ViewModel. На всякий случай можно проверить, выполнив код var_dump($view->captureTo());

В принципе этой информации должно быть достаточно что бы решить проблему.
Более подробно о видах в ZF написано в официальной документации.
teddy Отправлено: 25 Декабря, 2015 - 19:16:04 • Тема: Ролевая модель • Форум: Вопросы новичков

Ответов: 4
Просмотров: 357
Разъяснять до косточек увы времени нету, поэтому вот вам ссылочки

ACL
http://framework[dot]zend[dot]com/manual[dot][dot][dot]s[dot]acl[dot]intro[dot]html
http://framework[dot]zend[dot]com/manual[dot][dot][dot]cl[dot]refining[dot]html
http://framework[dot]zend[dot]com/manual[dot][dot][dot]cl[dot]advanced[dot]html

RBAC
http://framework[dot]zend[dot]com/manual[dot][dot][dot][dot]rbac[dot]intro[dot]html
http://framework[dot]zend[dot]com/manual[dot][dot][dot]bac[dot]methods[dot]html
http://framework[dot]zend[dot]com/manual[dot][dot][dot]ac[dot]examples[dot]html

Разбирайтесь. Если примеры для вас сложны то гуглите примеры ACL / RBAC
teddy Отправлено: 26 Ноября, 2015 - 21:06:34 • Тема: Нужно ли сверять токен в БД? • Форум: HTTP и PHP

Ответов: 76
Просмотров: 9644
MiksIr пишет:
хоть и результатом может являться csrf

Я рад что мы друг друга поняли Улыбка
MiksIr пишет:
Может банальное top != window сработает даже

Может и сработает, а может и не сработает. Есть sandbox, есть отключенный javascript.
MiksIr пишет:
Или запрет серверу работать с определенным набором user-agent.

Не привык доверять подобным данным...

SAD
Срача тут нет, мы просто беседуем Улыбка
Но в целом насчет стопа соглашусь, топ уже сильно напоминает кашу и мусолится почти одно и то же, только с разной формулировкой и легкими апдейтами))
teddy Отправлено: 26 Ноября, 2015 - 20:30:36 • Тема: Нужно ли сверять токен в БД? • Форум: HTTP и PHP

Ответов: 76
Просмотров: 9644
MiksIr пишет:
Во-первых, то, о чем вы говорите - это clickjacking.

Почему сразу clickjacking и только он? Да, есть такое понятие и в данном контексте текущий вопрос очень напоминает clickjacking из за замазывания UI.
Обычно когда говорят о clickjacking, в качестве примеров обычно выступают просто click-и по ссылочкам, кнопочкам, а-ля лайки.
Хочу сказать, установленный в качестве защиты от CSRF токен в форме, не всегда может защитить. Надеюсь вы понимаете о чем я. Если кратко - то форма есть, токен есть, и дыра есть.

MiksIr пишет:
огромное число способов защит базируется на same origin policy и прочих способах защит

Да никто не спорит Улыбка Я ведь уже говорил что верятность не такая большая, но тем не менее есть.
teddy Отправлено: 26 Ноября, 2015 - 19:02:49 • Тема: Нужно ли сверять токен в БД? • Форум: HTTP и PHP

Ответов: 76
Просмотров: 9644
MiksIr пишет:
Задача атакующего - отправить под логином атакуемого те данные, которые ему выгодны и нужны.

И в чем вы заметили противоречие между моим вопросом и данным утверждением?
Все то же самое, только не автоматически.
MiksIr пишет:
А в случае csrf - атакующему нахрен не нужна форма загруженная с оригинального сайта.

Нет. CSRF не значит "атакующему нахрен не нужна форма".
Видимо просто у вас в подсознании отложился шаблонный вариант CSRF.

Вариантов, увы, вы так и не предложили. Точнее сказали про токены в форме, которые не являются решением проблемы, о которой шла речь. А наличие проблемы - признали Улыбка
teddy Отправлено: 25 Ноября, 2015 - 21:55:15 • Тема: Нужно ли сверять токен в БД? • Форум: HTTP и PHP

Ответов: 76
Просмотров: 9644
MiksIr пишет:
Токен в форме.

Улыбка А токен ведь находится в таком же инпуте как и остальные, он тоже осядет в айфрейм, будет отправлен на сервер, и пройдет проверку. Нет?
MiksIr пишет:
Если у вас гет изменяющий состояние - это уже большая архитектурная проблема

Нет же) Никаких сохраняющих операций по гету нет. Речь совсем не об этом
teddy Отправлено: 25 Ноября, 2015 - 21:38:06 • Тема: Нужно ли сверять токен в БД? • Форум: HTTP и PHP

Ответов: 76
Просмотров: 9644
MiksIr пишет:
Читал. Кроме сообщений Мелкий - ничего вменяемого там нет.

Ну, я там тоже писал, в основном про гет токен... выходит по вашему мнению - это бред.
Тогда к вам такой вопрос,
Вы залогинены на каком нибудь сайте, там есть страничка, на страничке есть форма, которую видит только залогиненный.
Эта страничка подгружена через айфрейм на другом сайте. Айфрейм переодет, замазан стилями top документа так, что вы не узнаете эту страницу и заполняете форму и начисляете кому то деньги. Браузер старый, не понимает x frame options.
Как, по вашему мнению, можно предотвратить сохранение такой формы?

Хотелось бы получить профессиональный совет, который был бы лучше того, что я предложил.
(Добавление)
DeepVarvar пишет:
Так сделай. Аргументируй. Выложи на гитхаб.

У меня на руках 3 проекта)) Как время появится, подумаю что можно сделать что бы улучшить этот вариант. Мыслей много, я не все выложил)) Либо воспользуюсь вариантом MiksIr, который возможно он предложит
teddy Отправлено: 25 Ноября, 2015 - 21:20:59 • Тема: Нужно ли сверять токен в БД? • Форум: HTTP и PHP

Ответов: 76
Просмотров: 9644
DeepVarvar пишет:
Ну вот и покажи (себе покажи), сколько сайтов используют именно такую схему токена.

ааа)) речь не о том насколько это популярно а о том насколько это эффективно
Про то, что можно противопоставить конкретной атаке?
DeepVarvar пишет:
У меня не скрывает.

Человек за спиной?) Да, возможно Улыбка И после этого меня иногда называют параноиком? )
DeepVarvar пишет:
А я сказал что сессид ты не утащишь.

Да. Но есть на примете немного другая схема, подразумеваемый ход событий хоть и имеет место быть, но маловероятно. Поэтому не буду раздувать)
teddy Отправлено: 25 Ноября, 2015 - 20:42:54 • Тема: Нужно ли сверять токен в БД? • Форум: HTTP и PHP

Ответов: 76
Просмотров: 9644
DeepVarvar пишет:
Но ведь где-то должен выдаваться первичный валидный токен, иначе ты не отследишь токеновый след ))

Ну конечно должен %) При успешном входе, а далее уже по описанной схеме
DeepVarvar пишет:
Не пори чушь. Каким боком реферер спасает от XSS?

Ладно пофиг... ) непонятки
Ну да ладно. Вроде всё обсудили, мне не очень хочется продолжать Ниндзя
teddy Отправлено: 25 Ноября, 2015 - 19:49:33 • Тема: Нужно ли сверять токен в БД? • Форум: HTTP и PHP

Ответов: 76
Просмотров: 9644
DeepVarvar пишет:
Как он будет невалидным если ты запрос из ифрейма никак не отличишь от обычного.

А не нужно отличать, нет валидного токена в запросе - нет валидного токена в ответе
все просто
DeepVarvar пишет:
Я вообще-то в самом-самом начале говорил что хсс это совсем другой вопрос.

Так никто не спорит Улыбка Только защищаться от CSRF с помощью защиты от XSS немного странно : )))
teddy Отправлено: 25 Ноября, 2015 - 19:31:35 • Тема: Нужно ли сверять токен в БД? • Форум: HTTP и PHP

Ответов: 76
Просмотров: 9644
DeepVarvar пишет:
Ну ок, у тебя тоже один раз кликнуть надо для получения токена.
Кликнуть куда? Что мешает при не валидном запросе не подставлять токен никуда?
DeepVarvar пишет:
Куку чужого домена браузер не отправит на левый сорц.
На своем сайте ты имеешь доступ только к своим кукам.

Ну да. Видимо я тебя неверно понял. Я вообще то говорил про XSS уязвимость на сайте жертвы а не на левом сайте и то только если нет httponly или есть но браузер допотопный
DeepVarvar пишет:
Или тролль в гостях у жертвы, или жертва потеряла смарт, или...
От этого уже не спасет ни мой реферер, ни твой токен.

Сегодня очень много общественных мест где есть выход в интернет и машины в таких местах зачастую общие. Те же инет клубы.
teddy Отправлено: 24 Ноября, 2015 - 23:31:32 • Тема: Нужно ли сверять токен в БД? • Форум: HTTP и PHP

Ответов: 76
Просмотров: 9644
DeepVarvar пишет:
Кстати, а як ты определишь что тебя запросили с ифрейма, а? ))

А зачем мне это определять? Улыбка Ты же когда срц у айфрейма указываешь пишешь адрес, а токен не знаешь, поэтому и выясню отдавать тебе форму или нет)
DeepVarvar пишет:
В твоем варианте вообще не надо кликать.

Угу, потому что бесполезно Улыбка
DeepVarvar пишет:
Лучше покажи как ты, проведя XSS, с помощью жс получишь куки чужого домена ))

Если правильно понял вопрос, то достаточно поставить картинку в DOM а её сорц указать на свой сервер + document.cookie

Сори, мне пора) Если что пиши, думаю к завтрашнему вечерку отпишусь
(Добавление)
DeepVarvar пишет:
Значит жертву уже поимели по полной программе -- получен непосредственный доступ к ПК.

Забыл прокомментить
это вполне может быть инет клуб или другое общаковое заведение

Страниц (98): « 1 [2] 3 4 5 6 7 8 9 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB