Mr.*_* B. 7 php encryption symfony
我想自动地对URL /路由中的参数 (例如ID)进行解密/解密,例如:
domain.com/item/show/1应该是这样的domain.com/item/show/uj7hs2.
当前(伪)代码
public function myControllerFunctionAction() {
// ...
$id = $this->get('my.crypt')->encrypt($item->getId());
return $this->redirectToRoute('routeTo_myOtherControllerAction', array('id' => $id));
}
public function myOtherControllerFunctionAction($id) {
$id = $this->get('my.crypt')->decrypt($id); // decrypt
$item = $this->get('my.repository')->find($id);
// ...
}
Run Code Online (Sandbox Code Playgroud)
我想避免手动加密/解密.
像这样的东西是完美的:
# routing.yml
routeTo_myOtherControllerAction:
path: /item/show/{id}
defaults: { _controller: appBundle:Items:show }
options:
crypt_auto: true
crypt_method: %default_crypt_method%
Run Code Online (Sandbox Code Playgroud)
我找不到任何其他解决方案而不是我的服务.有任何想法吗?
提前致谢!
所以,只是为了澄清:
如果您对这两个问题的回答都是"是",请考虑遵循本指南进行URL参数加密.
使用defuse/php-encryption.它提供经过身份验证的加密,是可用性最好的PHP加密库之一.(这也是许可的.)
$decrypted = Crypto::decrypt($urlParameter, $yourKey);
// ... snip ... //
echo "<a href=\"/your/url/?".http_build_query([
'id' => Crypto::encrypt($yourRowId, $yourKey)
])."\">";
Run Code Online (Sandbox Code Playgroud)