我现在将秘密存储在parameters.yml中,这是一个纯文本。
我想保留一些参数和环境变量作为秘密,所以只有我自己和Symfony知道数据库的凭据。
有没有办法在Symfony 3.2中保护我的秘密,环境变量和参数?
我能举个例子吗?
谢谢。
是的,您可以通过两种不同的方法解决它:
http://symfony.com/doc/current/service_container/compiler_passes.html
选择合适的加密/解密算法:https://paragonie.com/blog/2015/11/choosing-right-cryptography-library-for-your-php-project-guide
你的编译通过
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')));
}
}
}
你的捆绑
class AppBundle extends Bundle
{
public function build(ContainerBuilder $container)
{
$container->addCompilerPass(new DecryptParameterPass());
}
}
https://symfony.com/doc/current/service_container/expression_language.html