首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Laravel 5.2确定安全路线?

问如何在Laravel 5.2确定安全路线?
EN

Stack Overflow用户
提问于 2017-11-14 10:44:08
回答 2查看 414关注 0票数 2

我有一个Laravel5.2的应用程序。我有一条路。现在,我想使一些路由安全,使任何人都不能猜测和插入任何value.Now,我想在{id}之前和{id}之后添加一些字符,这样任何人都无法通过猜测到达。

代码语言:javascript
复制
Route::get('/prize/{id}','PrizeCalculateController@showPrizePage');

现在,用户可以转到localhost/laravel/public/prize/1或用任何东西替换1,并且可以转到那个url。我想让它安全,这样任何人都不能通过猜测。

我试过:

代码语言:javascript
复制
$parameter = $qrcode->id;
$encryption= Crypt::encrypt($parameter);

什么是确保路线安全的最佳方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-14 10:59:36

加密ID将生成一个非常长的字符串(188+聊天符),不太友好。

您可以生成一个UUID (32个字符)来表示模型。有许多生成和验证UUID的包,例如这一个。

要使用UUID,您应该在表上创建一个列来表示它,并通过uuid字段而不是id加载模型。

由于UUID代表一个非常大的数字(128位1),所以很难猜测它(几乎不可能,3.402823669×10立方⁸中有一次机会)。

另外,进行困难的猜测(概率随着表大小的增加而增加),可以定期终止UUID (例如,如果使用UUID,则使UUID失效)。有许多方法来保护它,但这都取决于您的应用程序设计。

因为您不需要UUID的universally unique部分,所以也可以使用Laravel的str_random()助手生成一个大的随机字符串。一个16个字母数字字符串也非常强大(4.767240171×10⁸组合)。

考虑增加一个速度限制这条路线,也使它很难猜测。

票数 1
EN

Stack Overflow用户

发布于 2017-11-14 11:17:55

我使用这个lib来散列ID:http://hashids.org/php/

这是我给Laravel的包装纸:

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47283649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档