Php 如何在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

我有一个与Laravel 5.2兼容的应用程序。我有一些路线。现在我想做一些安全的路由,这样任何人都不能猜测和插入任何值。现在我想在
{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
etc
id
。我想
str\u random()
将满足我的需要。您能告诉我如何做到这一点吗?我的意思是我将在controller中生成此字符串,然后将其传递到url中?