Oc-windows.ru

IT Новости из мира ПК
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Php artisan key generate

Laravel Framework Russian Community

Установка

Установка Composer

Laravel использует Composer для управления зависимостями. Поэтому прежде чем ставить Laravel вы должны установить Composer.

Установка Laravel

При помощи установщика Laravel

Используя Composer скачайте установщик Laravel.

Указав в качестве PATH директорию

/.composer/vendor/bin , станет возможным использование команды laravel .

После установки, простая команда laravel new создаст свеженькое Laravel приложение в директории, которую вы укажете. Например, laravel new blog создаст директорию blog и установит туда Laravel со всеми зависимостями. Этот метод установки намного быстрее, чем установка через Composer:

При помощи Composer

Вы также можете установить Laravel используя команду Composer create-project :

Требования к серверу

У Laravel всего несколько требований к вашему серверу:

  • PHP >= 5.4
  • Mcrypt PHP Extension
  • OpenSSL PHP Extension
  • Mbstring PHP Extension

Начиная с PHP 5.5, в некоторых операционных системах может понадобиться ручная установка PHP JSON extension. В Ubuntu, например, это можно сделать при помощи sudo apt-get install php5-json .

Настройка

Первое, что вы должны сделать после установки Laravel — установить ключ шифрования сессий и кук. Это случайная строка из 32 символов, находится в файле .env , параметр ‘APP_KEY’. Если вы устанавливали Laravel при помощи Composer, то ключ уже сгенерен. Вы можете сгенерить его вручную artisan-командой key:generate . Если ключ шифрования отсутствует, ваши сессии, куки другая шифруемая информация не будет зашифрована надежным образом..

Laravel практически не требует другой начальной настройки — вы можете сразу начинать разработку. Однако может быть полезным изучить файл config/app.php — он содержит несколько настроек вроде timezone и locale , которые вам может потребоваться изменить в соответствии с нуждами вашего приложения.

Примечание: Никогда не устанавливайте настройку app.debug в true на рабочем (продакшн) окружении.

Права на запись

Папки внутри storage должны быть доступны веб-серверу для записи. Если вы устанавливаете фреймворк на Linux или MacOS — открыть папки на запись можно командой chmod -R 777 storage

Красивые URL

Apache

Laravel поставляется вместе с файлом public/.htaccess , который настроен для обработки URL без указания index.php . Если вы используете Apache в качестве веб-сервера обязательно включите модуль mod_rewrite .

Если стандартный .htaccess не работает для вашего Apache, попробуйте следующий:

Nginx

Если вы используете в качестве веб-сервера Nginx, то используйте для ЧПУ следующую конструкцию:

Если вы используете Homestead, то вам ничего делать не нужно, там всё это уже настроено.

Команды Artisan Make с параметрами

В Laravel есть потрясающий набор artisan команд, из которых чаще всего используется make:xxx — например, make:model или make:migration и т. Д. Но знаете ли вы их все? Знаете ли их параметры, которые могут помочь сделать код еще быстрее?

Во-первых, есть команда php artisan list, которая выдаст нам все команды:

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

Для этого мы углубимся в код фреймворка, находящийся в папке /vendor/laravel/framework/src/Illuminate, и проверим, какие опции и недокументированные функции есть у этих команд.

1. make:controller

Эта команда создает новый файл контроллера в папке app/Http/Controllers.

—resource
Контроллер будет содержать методы для каждой из доступных операций с ресурсами — index(), create(), store(), show(), edit(), update(), destroy().

—model=Photo
Если нужно, чтобы методы контроллера указывали на экземпляр модели.

—parent=Photo
Недокументированный параметр, в коде написано «Генерирует вложенный класс контроллера ресурсов», но мне не удалось сгенерировать контроллер таким образом. Вероятно, работа над этим параметром еще в процессе.

2. make:model

Создает новый класс Eloquent модели.

—migration
Создает новый файл миграции для модели.

—controller
Создает новый контроллер для модели.

—resource
Указывает, что сгенерированный контроллер должен контроллером ресурсов.

Да, вы правильно поняли, вы можете сделать так:

Или даже короче:

3. make:migration

Создает новый файл миграции.

—create=Table
Таблица, которая будет создана.

—table=Table
Таблица для миграции.

—path=Path
Место, где будет создан файл миграции.

4. make:seeder

Создает новый класс наполнения базы данных.

5. make:request

Создает новый класс валидации форм в папке app/Http/Requests.

6. make:middleware

Создает новый класс посредника.

7. make:policy

Создает новый класс политики.

—model=Photo
Модель, к которой применяется политика.

8. make:auth

Шаблоны и маршруты для логина и регистрации.

Читать еще:  Php знак неравенства

—views
Только шаблоны аутентификации.

—force
Перезаписать существующие шаблоны по умолчанию.

9. make:command

Создает новую команду Artisan.

—command=Command
Назначаем терминальную команду.

10. make:event

Создает новый класс событий.

11. make:job

Создает новый класс отложенных задач

—sync
Задача должна быть синхронной.

12. make:listener

Создает новый класс слушателя событий

—event=Event
Класс, который будет прослушиваться.

—queued
Указывает, что слушатель должен быть поставлен в очередь.

13. make:mail

Создает новый почтовый класс.

—markdown
Создает новый Markdown-шаблон для писем

14. make:notification

Создает новый класс уведомлений.

—markdown
Создает новый Markdown-шаблон для уведомлений.

15. make:provider

Создает новый класс провайдера

16. make:test

Создает новый класс тестирования.

—unit
Создает модуль теста.

Следите за выходом новых статей через наши каналы в Телеграм и Вконтакте

Php artisan key generate

Every time Laravel developers start or clone a Laravel app, generating the application key or APP_KEY is one of the most important first steps.

A recent Laravel security update fixed an issue with how APP_KEY is used. For someone to exploit this issue, they’d need to have access to the production APP_KEY . The simplest fix for the exploit is to rotate (change) your APP_KEY . That led some of us at Tighten to ask the question: What does the app key do? What is involved in rotating it? What are best practices for managing these keys for our Laravel applications?

In this post, we’ll talk about what APP_KEY does and doesn’t do, some common misconceptions about its relationship to user password hashing, and the simple steps to changing your APP_KEY safely without losing access to your data.

Laravel Security Fix

In early August, Laravel 5.5 and 5.6 received a security fix related to cookie serialization and encryption. On one hand, the fix is simple and most applications probably weren’t affected. On the other hand, it’s a serious security risk and reveals the need for our community to better understand how APP_KEY s work.

Exploiting this security issue requires someone to know your APP_KEY , which is why I’m going to walk you through the details of your key, why it’s important, and how to change it.

For information about the security fixes, see these resources:

What is APP_KEY ?

The application key is a random, 32-character string stored in the APP_KEY key in your .env file. The Laravel installer generates one for you, so you’ll only notice it missing when you clone an existing app.

You’ve probably seen this error before:

To create a new key, you could generate one yourself and paste it into your .env , or you can run php artisan key:generate to have Laravel create and insert one automatically for you.

Once your app is running, there’s one place it uses the APP_KEY : cookies. Laravel uses the key for all encrypted cookies, including the session cookie, before handing them off to the user’s browser, and it uses it to decrypt cookies read from the browser. This prevents the client from making changes to their cookies and granting themselves admin privileges or impersonating another user in your application. Encrypted cookies are an important security feature in Laravel.

All of this encryption and decryption is handled in Laravel by the Encrypter using PHP’s built-in security tools, including OpenSSL. We won’t be looking closely at how that encryption works here, but if you want to learn more I’d encourage you to read more on the PHP implementation of OpenSSL and the openssl_encrypt function.

Common misconceptions about password hashing

One very common misconception in the Laravel community—one I held myself until recently—is that the APP_KEY is used to hash passwords. Thankfully, this isn’t the case! I think this leads many people to assume that the APP_KEY is un-rotatable without breaking all of your users’ logins.

Passwords are not encrypted, they are hashed.

Laravel’s passwords are hashed using Hash::make() or bcrypt() , neither of which use APP_KEY . Let’s take a look at encryption and hashing in Laravel.

Encrypting vs. Hashing

There are two main cryptographic facades in Laravel: Crypt (symmetric encryption) and Hash (one-way cryptographic hashing). Passwords are hashed, and cookies are (optionally) encrypted. Let’s look at the differences.

Читать еще:  Setup config php

Symmetric Encryption

Let’s say I want to send a secret message to my friend Arthur. We both agreed on a secret key the last time we were together:

I want to send him a short message that only that key can decrypt. I’ll use my favorite industry standard, open source encryption function openssl_encrypt() (used by Laravel’s Crypt ) with our shared $key and have a plain-text encrypted string to send him:

I’ll send this secret to Arthur any way I want; since we’re the only two with the key, I’m not worried about anyone else reading the message.

When Arthur gets it, he’ll reverse the process using our secret key. This is the symmetric part of it: we’re able to encrypt and decrypt without losing information.

Laravel uses this same method for cookies, both the sender and receiver, using APP_KEY as the encryption key. Response cookies are encrypted, sent to the user, read back in a future request, and decrypted, all using the same application key.

One-Way Hash

Our example of symmetric encryption has lots of potential uses, but all of them involve needing to eventually decrypt the scrambled message.

But when it comes to something like user passwords, you should never have a way to decrypt them. Ever.

This means our Crypt methods won’t work, and therefore can’t be based on a key that we have. Instead, we need a hashing function, which should be:

  1. Speedy: A computer should be able to generate a hash quickly
  2. Deterministic: Hashing the same input always gives the same output
  3. Seemingly random: Changing a single letter of the input should drastically change the output
  4. Unique: The collision rate (different inputs hashing to the same output) should be very small
  5. Hard to brute force: It should be difficult to hash all possible inputs to guess our original input

You’re likely already familiar with many one-way hashing algorithms: MD5 and SHA-1 are quick to compute, but not the most secure (they’re weak on items 4 and 5 above).

Laravel hashing implements the native PHP password_hash() function, defaulting to a hashing algorithm called bcrypt. For one-way hashing, it’s a great default, and you shouldn’t need to change it (though Laravel now offers a few other hashing methods, too).

If you’ve ever looked in the users table, this might look familiar to you. Here’s what it means:

  • $2y$ hashed using the blowfish algorithm (bcrypt)
  • 10$ the “cost” factor (higher means the hash takes longer to compute)
  • hEEF0lv4spxnvw5O4XyLZ. a random “salt” of 22 characters
  • QjCE1tCu8HjMpWhmCS89J0EcSW0XELu the hash output

Since this is a one-way hash, we cannot decrypt it. All that we can do is test against it.

When the user with this password attempts to log in, Laravel hashes their password input and uses PHP’s password_verify() function to compare the new hash with the database hash:

You’ll notice that Laravel only needs a key (in this case, APP_KEY ) when symmetric (reversible) encryption is needed. User password storage should never be reversible, and therefore doesn’t need APP_KEY at all.

But that doesn’t mean your key should be treated carelessly. Instead, treat it like any other production credential: use the same care and security as your MySQL password or MailChimp API key.

Rotating your key

Any good credential management strategy should include rotation: changing keys and passwords on a regular basis (e.g. every 6 months) or in specific situations (e.g. an employee leaves the company).

Thankfully, it is possible to rotate your APP_KEY ; you just need to keep a few things in mind.

Multiple Servers

If you serve the same application from multiple servers, you’ll need to update the key on each server.

Existing user sessions (cookies)

Any users currently logged in to your application will have their sessions invalidated as soon as you change your APP_KEY . Schedule your key rotation at an optimal time to minimize inconvenience for your users.

Читать еще:  Php pdo connect

Other data you’ve encrypted

Although the security of your cookies is the only place Laravel uses the APP_KEY as a framework, you may have custom code in your application that encrypts your data. If you have any uses of Laravel’s encrypting features, make and test a plan to decrypt that data with your old key and re-encrypt it with the new key.

Setting a new APP_KEY

First, copy your existing APP_KEY somewhere else, just in case changing your key has unintended side effects.

Before you try rotating your APP_KEY on your production server, try rotating it on your local machine to make sure everything goes smoothly. When you’re ready, run php artisan key:generate :

And that’s it! If you want to generate a key without modifying your .env file, include the —show flag:

Lumen Micro Framework = > php artisan ключ: создать

я пробую PHP micro Framework Lumen (от Laravel).

один из моих первых шагов было заглянуть в .env.example файл и сделать его копию, чтобы иметь мой . Существует переменная APP_KEY так же, как и в Laravel. Теперь я попробовал простую команду php artisan key:generate чтобы получить мой новый ключ, но я столкнулся следующее сообщение об ошибке

[InvalidArgumentException] There are no commands defined in the «key» namespace.

кто-нибудь знает, как я могу генерировать ключи для Люмена?

обновление с решением

поэтому я нашел свое любимое решение этой проблемы. В командной строке (Linux) я запускаю php -r «echo md5(uniqid()).»n»;» что дает мне что-то вроде этого 7142720170cef01171fd4af26ef17c93 .

если вы собираетесь использовать Lumen чаще, вы можете создать псевдоним в своем .bashrc , который находится в вашем домашнем каталоге /home/USERNAME . Для этого вы можете открыть файл с nano

/.bashrc и скопируйте следующий псевдоним в конец файла alias phpkey=’php -r «echo md5(uniqid()).»n»;»‘ . Теперь вы можете использовать команду phpkey который даст вам 32-символьную длинную случайную строку 🙂

9 ответов

команда Laravel довольно проста. Он просто генерирует случайное 32 символа строки. Вы можете сделать то же самое в Люменах. Просто временно добавьте такой маршрут:

тогда перейдите в /key в вашем браузере и скопируйте вставьте ключ в свой .
После этого удалите маршрут.

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

во-первых, вы должны зарегистрировать свою генератор ключей команды, поставил этот Люмен Ключ Генератор Команды to app/Console/Commands/KeyGenerateCommand.php . Чтобы сделать эту команду доступной в artisan , изменения appConsoleKernel.php :

после этого настройте свое приложение так, чтобы IlluminateConfigRepository экземпляр app.key значение. Для этого измените bootstrap/app.php :

после этого, скопируйте до .env :

игнорировать этот шаг если вы уже используете .

редактировать

вы можете использовать Люмена Генератор. Он охватывает так много команд, которые вам не хватает в Laravel.

простое решение-это просто запуск PHP-кода с терминала (без использования tinker , потому что это недоступно с Lumen):

Он использует фреймворк Laravel по Str::random() функция, которая использует secure .

для меня самый простой способ сгенерировать ключ люмен набрав в консоли одну из следующих команд:

openssl rand -base64 24

в зависимости от вашей среды. В моем случае я всегда использую date | md5 на mac

генерация APP_KEY-это шаг процесса разработки (я не думаю, что создание временных маршрутов-это практический способ сделать это). Функция str_random может помочь нам, но эта функция является частью структуры Laravel/Lunmen. Я рекомендую запустить tinker

php artisan tinker

а затем запустите функцию

результатом является ключ, который вы ищете.

этот ответ был вдохновлен обновлением @thomas-venturini на этот вопрос. Вот сценарий bash, который заботится о создании .env и обновление его с помощью APP_KEY используя вышеупомянутую команду PHP и UNIX :

надеюсь, кто-то найдет это полезным.

я использовал следующие команды:

команда генерирует ключ, подобный этому:

все, что я делаю на mac, это выполняю эту команду в терминале:

это копирует значение в буфер обмена, и поэтому вы можете легко вставить ключ в .

для генерации ключа и использования команды laravel вам необходимо установить один пакет. Подробности приведены ниже:

  1. вы должны установить пакет composer require flipbox/lumen-generator
  2. вы должны добавить $app->register(FlipboxLumenGeneratorLumenGeneratorServiceProvider::class); на .
Ссылка на основную публикацию
Adblock
detector