Php 如何在Laravel 5.2中制定安全路线?
我有一个与Laravel 5.2兼容的应用程序。我有一些路线。现在我想做一些安全的路由,这样任何人都不能猜测和插入任何值。现在我想在Php 如何在Laravel 5.2中制定安全路线?,php,laravel,laravel-5.2,Php,Laravel,Laravel 5.2,我有一个与Laravel 5.2兼容的应用程序。我有一些路线。现在我想做一些安全的路由,这样任何人都不能猜测和插入任何值。现在我想在{id}之前和{id}之后添加一些字符,这样任何人都不能通过猜测达到它 Route::get('/prize/{id}','PrizeCalculateController@showPrizePage'); 现在用户可以转到localhost/laravel/public/prize/1或用任何东西替换1,并可以转到该url。我想让它安全,这样任何人都不会猜测 R
{id}
之前和{id}
之后添加一些字符,这样任何人都不能通过猜测达到它
Route::get('/prize/{id}','PrizeCalculateController@showPrizePage');
现在用户可以转到localhost/laravel/public/prize/1
或用任何东西替换1,并可以转到该url。我想让它安全,这样任何人都不会猜测
Route::get('/prize/{id}','PrizeCalculateController@showPrizePage');
我试过:
$parameter = $qrcode->id;
$encryption= Crypt::encrypt($parameter);
使路由安全的最佳方法是什么?加密ID将生成一个很长的(188+chatacters)字符串,不太友好 您可以生成一个(32个字符)来表示您的模型。例如,有许多生成和验证UUID的包 要使用UUID,您应该在表上创建一列来表示它,并通过
UUID
字段而不是id
加载模型
由于UUID代表一个非常大的数字(128位1),因此很难猜测它(实际上不可能,3.402823669×10³中有一次机会)⁸).
此外,还要进行困难的猜测(概率随着表大小的增加而增加),您可以定期终止UUID(例如,如果使用UUID,也可以使其失效)。有许多方法可以保护UUID,但这一切都取决于您的应用程序设计
由于您不需要UUID的通用唯一性
部分,您也可以使用Laravel的str_random()
helper生成一个大的随机字符串。16个字母数字字符的字符串也非常强大(4.767240171×10²)⁸ 组合)
考虑将速率限制添加到此路由也会使猜测变得非常困难。我使用此库对ID进行哈希: 这是我给拉威尔的包装纸:
public static function staticHash($number, $obfuscate = false)
{
$hashids = new \Hashids\Hashids(\Config::get('app.key'));
return $hashids->encode($number);
}
public static function staticHashDecode($hash, $obfuscate = false)
{
$hashids = new \Hashids\Hashids(\Config::get('app.key'));
$number = $hashids->decode($hash);
if (isset($number[0])) {
$number = $number[0];
} else {
$number = false;
}
return $number;
}
我认为最好使用
中间件
。请看文档!@HirenGohel我已经为用户使用了中间件
。但是我想让任何用户都不能访问这个url键入。/prize/12
etcid
。我想str\u random()
将满足我的需要。您能告诉我如何做到这一点吗?我的意思是我将在controller中生成此字符串,然后将其传递到url中?