Хранение паролей в Yii2
Здравствуйте! Сегодня хотелось бы поговорить о методах, позволяющих повысить безопасность, в приложениях на Yii2.
Поскольку алгоритмы шифрования паролей алгоритмами md5 or sha1 уже не внушают сильного доверия. В Yii2 был реализован метод реализующий хеширование bcrypt.
$hash_pass=Yii::$app->getSecurity()->generatePasswordHash('123');
в результате выполнения данного метода переменная $hash_pass будет содержать приблизительно следующее значение из 64 символов
$2y$13$imm.m0q9qN/IrWF4AtmH4ejHyS3d.ElmkayY3vQ69DTApgEY4ne36
Также у generatePasswordHash можно указать вторым параметром сложность шифрования
$hash_pass=Yii::$app->getSecurity()->generatePasswordHash('123',10);
по умолчанию этот параметр имеет значение 13. В официальной документации рекомендуют выставлять этот параметр повыше, но не стоит увлекаться.
Это довольно ресурсоемкий процесс. Если представить, что ваш компьютер сосчитает хеш со сложностью 14 за 1 секунду, то формула по нахождению времени расчета хеша будет выглядеть так 2^(сложность — 14) секунд.
В отличии от md5, при повторном вызове данного метода, будет сгенерирован абсолютно другой набор символов! Для этого для валидации пароля используется следующий код.
Yii::$app->getSecurity()->validatePassword($pass, $hash_pass);
Метод вернет true в случае успешной проверки и false в случае несоответствия данных.
Текстовый редактор с загрузкой изображений
Недавно наткнулся на интересный текстовый редактор Imperavi с возможностью загрузки изображений и ко всему прочему сообщество Yii купило OEM лицензию на него, за что отдельное спасибо!
До этого для вставки текстового редактора я использовал CKEditor и расширение для него the-ckeditor-integration, редактор Imperavi мне показался хорошей альтернативой. В этой статей хотелось бы поделиться своими впечатлениями о редакторе Imperavi. читать далее
Склонение существительных
Здравствуйте! Недавно столкнулся с задачей склонения существительных после числовых значений, например 1 удав, но 2 удава. Прежде чем лезть в просторы интернета за готовыми вариантами решений, мне захотелось самому понять принцип склонения существительных.
Итак для начала я решил составить таблицу возможных окончаний слова в зависимости от числительного. Поскольку выше были упомянуты удавы, то на них и остановимся. читать далее
AJAX ссылка с подменой необходимого URL
Здравствуйте! Сегодня хотелось бы поделиться способом создания ajax ссылок в Yii. Зачастую бывает, что кроме самого функционала ajax ссылки необходимо проставить соответствующие адреса, для более правильной индексации поисковиками.
Давайте представим, что у нас есть какое-то меню рубрик товаров. Например меню состоит из 3х пунктов «Цветы, горшки, земля» и мы решили сделать эти ссылки посредством ajax т.е. при нажатии на «Горшки» у нас в блоке контента появляются горшки без перезагрузки страницы. Код подобной ссылки будет примерно следующий: читать далее
Реализовать связь многие ко многим в Yii
Добрый день! Сегодня рассмотрим способ организации связи таблиц многие ко многим на Yii.
Допустим у нас есть таблица профилей пользователей и таблица категорий интересов и увлечений. Один пользователь может иметь несколько увлечений и одним увлечением может интересоваться несколько пользователей, таким образом у нас получается связь многие ко многим. читать далее
Смена кодировки файла VBScript
Наверное многие сталкивались с проблемой смены кодировки в файле посредством Windows. В данной статье я расскажу как можно сменить кодировку посредством VBScript.
Из всех рассмотренных вариантов я решил остановиться на создании объекта ADODB.Stream. Поставим себе задачу преобразовать файл кодировки ANSI в UTF-8. Суть нашего способа будет такова: читать далее
Устанавливаем текстовый редактор CKEditor на Yii
При создании представлений, бывает необходимо делать поля ввода с возможностью форматирования текста. Вот и у меня возникла такая потребность в текстовом редакторе. После недолгих поисков готовых текстовых редакторов в интернете, я решил остановить свое внимание на редакторе CKEditor.
Он имеет все основные функции редактирования текста и есть три режима, которые содержат разные наборы кнопок редактирования. читать далее
Быстрый импорт файла в базу данных
Довольно часто возникает потребность занесения информации из файлов в базу данных. Одним из способов решения данной задачи является: открытие файла, построчно считывать файл, разбивать строку по разделителю и заносить в базу. Но в таком случае может возникнуть проблема в скорости импорта, если файл будет слишком большой.
Для решения данной проблемы можно воспользоваться оператором MySQL LOAD DATA INFILE. LOAD DATA INFILE позволяет загружать информацию из файлов с большой скоростью, что нам и требуется. читать далее