я прав

книга злого кровавого демона

Произвольная хэш функция для аутентификации в CakePHP

leave a comment »

Разработчикам чаще приходится не создавать веб-приложения с нуля, а дорабатывать существующие или по крайней мере использовать бд, которая используется совместно с другими приложениями. И скорее всего в таком случае задача хранения пароля пользователя решалась несколько по-другому, чем по умолчанию предполагается в CakePHP. Например, хэш вычисляется по фунции

sha1(md5(‘SeCrEt’ . $password . ‘KeY’)).

Как с этим жить?

CakePHP хранит пароли следующим образом:
поле пароля в БД = самый стойкий из доступных хэшей(открытый пароль + секретная соль)

Но на наш случай у компонента Auth припасено свойство authenticate (см. http://api.cakephp.org/class/auth-component) – ссылка на объект, который реализует функцию hashPassword.

И, собственно говоря, пример:

в файле app_controller.php помещаем класс для нашей хэш функции

  1. class MyHash {
  2.     public function hashPasswords($data) {
  3.         if (is_array($data) && isset($data[‘User’])) {
  4.             if (isset($data[‘User’][‘username’]) && isset($data[‘User’][‘password’])) {
  5.                 $data[‘User’][‘password’] = sha1( md5 (‘SeCrEt’ . $data[‘User’][‘password’] . ‘KeY’) );
  6.             }
  7.         }
  8.         return $data;
  9.     }
  10. }

а в функции AppController::beforeFilter пишем строчку

  1. $this->Auth->authenticate = new MyHash();

Готово!

Написано evilbloodydemon

2009/09/25 в 15:35

Опубликовано в cakephp

Ускорение Netbeans

с 19 комментариями

Netbeans – самая лучшая IDE для разработки на php, но иногда несколько задумчивая. Этот недостаток исправляется некоторыми настройками для java-машины.
В /etc/netbeans.conf или в ярлык для запуска IDE нужно добавить следующие опции

-J-client -J-Xms32m -J-Xmx384m -J-XX:PermSize=32m -J-XX:MaxPermSize=200m -J-Xverify:none -J-XX:CompileThreshold=100 -XX:+CompressedOOPS -XX:+AggressiveOpts -XX:+TieredCompilation -XX:+DoEscapeAnalysis -XX:+UseConcMarkSweepGC -J-XX:+CMSClassUnloadingEnabled -J-XX:+CMSPermGenSweepingEnabled

Таким образом мы разрешаем использовать до 384 мб памяти, компилировать в машинный код большинство функций и оптимизировать их.

Результат вас приятно удивит.

Написано evilbloodydemon

2009/09/24 в 09:01

Опубликовано в all

Отмечено как , , , ,

Netbeans CakePHP Bundle

с 6 комментариями

Смастерил набор сниппетов для Netbeans, облегчающих разработку на фреймворке CakePHP.
50 для шаблонов отображения и 26 для php-кода.
Источником вдохновения послужил оригинальный бандл для маковского редактора TextMate, в котором на скринкастах так ловко набирают километры исходных кодов для торта. Возможности у сниппетов в нетбинс не такие широкие, как у текстмэйта, но я постарался максимально сохранить оргинальное поведение.

Дистрибутив и репозиторий лежат на гитхабе

Установка очень проста:

1. скачать последний релиз отсюда
2. Запустить нетбинс
3. Импортировать сниппеты (Tools -> Options -> Import)
4. Перезапустить нетбинс
5. Делать сайты в десять раз быстрее

Написано evilbloodydemon

2009/09/10 в 09:16

Опубликовано в cakephp

Отмечено как , ,

Еще раз о Cake3

leave a comment »

Введение

Да, да, я знаю. Такое уже было раньше. Что я могу сказать – у меня были вопросы, а у Nate были ответы. Это первая часть, в ней рассматриваются общие вопросы о CakePHP и Cake3.

Общие вопросы

Похоже что у CakePHP будут сразу три версии, это несомненно может запутать новых разработчиков. Я не видел официальных заявлений на этот счет, так что поправьте меня, если я не прав:
- ветка 1.3 – для всех, кто пишет под PHP4
- ветка 2.0 – для тех, кто разрабатывает новые проекты под PHP5-5.2 или для тех, кто использует PHP 5.3 и хочет проапгрейдить приложения, написанные под CakePHP 1.2
- ветка 3.0 – для приложений на PHP 5.3

Почти верно. Как только ветка 1.3 станет стабильной, разработка версии 1.x прекратится, будут только исправляться ошибки и проблемы безопасности. Мы еще не определились с возможностью обратного портирования фич из 2.x, но это будет зависить от спроса на такую деятельность, чего не предвидится. и да, 2.0 позволит просто переносить приложения с 1.3 (его API практически не отличается от 1.2). 3.0, в свою очередь, находится в ранних стадиях разработки и не рекомендуется ни для чего, кроме экспериментов.

Прочтите эту запись до конца »

Написано evilbloodydemon

2009/08/06 в 14:07

Опубликовано в cakephp

cakephp 3.0

с 4 комментариями

Сейчас очень мало информации о CakePHP 2.0 и особенно о суперновом 3.0, так что я решил провести небольшое интервью с Nate Abele, ведущим разработчиком CakePHP.

Привет, Nate, CakeFest завершился и слух об анонсе CakePHP 2.0 и Cake 3 постепенно распространяется. Можешь рассказать в общих чертах, что будет в новых версиях?

CakePHP 2.0 – это обновление текущей версии 1.x с переходом на строгую совместимость с PHP5, что означает, помимо выгоды от избавления от излишнего кода для поддержки PHP4, повышение производительности примерно на 25%.

Cake 3, с другой стороны, значительно отличается от текущей версии по ряду параметров. В основном тем, что с нуля переписан на PHP 5.3.

CakePHP 2.0 будет совместим с 1.x? Мы уже пережили значительный апгрейд с 1.1 на 1.2, апгрейд на 2.0 видимо будет еще более тяжелым?
Прочтите эту запись до конца »

Написано evilbloodydemon

2009/07/22 в 14:17

Опубликовано в cakephp

Интерактивная консоль для CakePHP

leave a comment »

Matt Curry смастерил плагин Interactive для плагина DebugKit.

Для чего он нужен?

Прочтите эту запись до конца »

Написано evilbloodydemon

2009/06/09 в 09:46

Опубликовано в cakephp

Как объединить действия add и edit вместе

leave a comment »

Контроллер

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

Вот действия add и edit, созданные через консоль:
Прочтите эту запись до конца »

Написано evilbloodydemon

2009/06/01 в 13:40

Опубликовано в all

8 способов ускорить сайт на CakePHP

с 2 комментариями

Введение
Всем известно, что CakePHP медленный. А вот что известно не всем – то что это запланировано изначально. У меня могут быть проблемы из-за того, что я делаю этот секрет достоянием общественности, но я осознанно иду на риск. У меня есть доказательства – список длиной в километр, в котором наглядно показано, что разработчики CakePHP активно скупают акции Dell, IBM, Cisco и других компаний, производящих серверное оборудование. Мы все слышали выражение «сервера стоят дешево, а программисты – дорого». Команда CakePHP нашла способ монетизировать его, выпустив фреймворк, который позволяет разрабатывать быстро, но работает медленно. Они хотят, чтобы вы покупали больше железа. Оригинально, да? Так что я здесь, чтобы положить конец всему этому. Каждый совет в этой статье – это минус одна золотая цепь на шее разработчиков CakePHP.

Прочтите эту запись до конца »

Написано evilbloodydemon

2009/04/08 в 12:43

Опубликовано в cakephp

Использование String::insert для локализации в CakePHP

leave a comment »

Представим себе будни локализатора веб-приложения. Предположим, что у нас имеется форма логина (английский вариант)
login_eng

и русский вариант
login_rus

Обратите внимание, что порядок следования ссылок «сброс пароля» и «создание аккаунта» изменен. Возникает вопрос, как сделать такую надпись с минимумом возни. И тут же возникает ответ – String::insert. Вот код (всей этой формы, хочу заметить, не только надписи)

Прочтите эту запись до конца »

Написано evilbloodydemon

2009/01/27 в 10:41

Опубликовано в cakephp

CakePHP – уязвимость в компоненте Auth

leave a comment »

14 января на хабре мне в приват написали об уязвимости в компоненте Auth фреймворка CakePHP и в качестве доказательства была приведена ссылка на скриншот дефейса thechaw.com, да и на самом сайте дефейс не был убран. В чем суть уязвимости, мне сообщить отказались, сославшись на то, что подробные инструкции переданы разработчикам. И действительно за предыдущий день есть changeset со скупым описанием «updating auth component and test with additional checks for missing data». И уже 16 числа выходит релиз 1.2.1, на который настоятельно рекомендуют обновится.
И в самом деле уязвимость довольно серьёзная. Приложив минимум усилий, можно получить доступ в качестве любого пользователя системы…
Прочтите эту запись до конца »

Написано evilbloodydemon

2009/01/23 в 09:54

Опубликовано в cakephp

Отмечено как , ,