2017-12-25 1 views
1

Ich speichere derzeit die Geheimnisse in parameters.yml, das ein einfacher Text ist.Welcher wäre der beste Weg, um verschlüsselte Parameter zu speichern, die in Symfony in Ihren Diensten verwendet werden können?

Ich möchte einige Parameter und Umgebung Vars als Geheimnisse so nur ich und Symfony die Anmeldeinformationen für die Datenbank zu halten.

Gibt es eine Möglichkeit, meine Geheimnisse, Umgebungsvariablen und Parameter in Symfony 3.2 zu schützen?

Kann ich ein Beispiel haben?

Vielen Dank.

+0

Sie erwähnt nicht, welche Version des Symfony dechiffriert Sie verwenden, dass – matiit

+0

helfen würde, Symfony 3.2.6 wird verwendet – Masha

Antwort

1

Ja, können Sie es in zwei verschiedenen Ansätzen lösen:

einen Compiler Pass bauen, die die Parameter

http://symfony.com/doc/current/service_container/compiler_passes.html

Wählen Sie eine geeignete Verschlüsselung/Entschlüsselungsalgorithmus entschlüsseln: https://paragonie.com/blog/2015/11/choosing-right-cryptography-library-for-your-php-project-guide

Ihre Compiler Pass

class DecryptParameterPass implements CompilerPassInterface 
{ 
    public function process(ContainerBuilder $container) 
    { 
     if ($container->hasParameter('you_paramater_enc') && (!$container->hasParameter('you_paramater') or !!$container->getParameter('you_paramater'))) { 
      $container->setParameter('you_paramater', your_decrypt_method($container->getParameter('you_paramater_enc'))); 
     } 
    } 
} 

Ihr Bündel

class AppBundle extends Bundle 
{ 
    public function build(ContainerBuilder $container) 
    { 
     $container->addCompilerPass(new DecryptParameterPass()); 
    } 
} 

Sie komplexe Ausdrücke verwenden können, ein Dienst aufrufen, die die Parameter

https://symfony.com/doc/current/service_container/expression_language.html

+0

Könnten Sie bitte ein Beispiel geben zu: 1) wie man einen Compiler-Durchlauf erstellt und Parameter an db weiterleitet? oder 2) Wie man einen solchen Container erstellt und Parameter an db weiterleitet? Danke – Masha

+0

Überprüfen Sie das Beispiel – albert

+0

ist es möglich, einige grundlegende Implementierung von 'your_decrypt_method()'? Danke – Masha

Verwandte Themen