如何在 Laravel 5.2 中创建安全路由?
How to make secure route in Laravel 5.2?
我有一个 Laravel 5.2 的应用程序。我有一些路线。现在我想让几条路线安全,这样任何人都无法猜测和插入任何 value.Now 我想在 {id}
之前和 {id}
之后添加一些字符,这样任何人都无法通过猜测。
Route::get('/prize/{id}','PrizeCalculateController@showPrizePage');
现在用户可以转到 localhost/laravel/public/prize/1
或将 1 替换为任何内容,然后可以转到 url。我想让它安全,这样任何人都无法猜测。
我试过:
$parameter = $qrcode->id;
$encryption= Crypt::encrypt($parameter);
确保路由安全的最佳方法是什么?
加密ID会生成一个很长的字符串(188+字符),不太友好。
您可以生成一个 UUID (32 characters) to represent your model. There's many packages that generates and validate UUID, for example this one。
要使用 UUID,您应该在 table 上创建一个列来表示它,并通过 uuid
字段而不是 id
.[=15= 加载模型]
由于UUID代表一个非常大的数字(128位一个),很难猜到(几乎不可能,3.402823669×10³⁸中的一个机会)。
也做猜题(概率随着你的table大小的增加而增加),你可以定期使UUID过期(或者在使用时使它失效)。有很多方法可以保护它,但这完全取决于您的应用程序设计。
由于您不需要 UUID 的 universally unique
部分,您也可以使用来自 Laravel 的 str_random()
帮助程序生成一个大的随机字符串。一个 16 个字母数字字符的字符串也很强大(4.767240171×10²⁸ 组合)。
考虑为这条路线添加一个速率限制也让它很难被猜测。
我使用这个库来散列 ID:http://hashids.org/php/
这是我对 Laravel 的包装:
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;
}
我有一个 Laravel 5.2 的应用程序。我有一些路线。现在我想让几条路线安全,这样任何人都无法猜测和插入任何 value.Now 我想在 {id}
之前和 {id}
之后添加一些字符,这样任何人都无法通过猜测。
Route::get('/prize/{id}','PrizeCalculateController@showPrizePage');
现在用户可以转到 localhost/laravel/public/prize/1
或将 1 替换为任何内容,然后可以转到 url。我想让它安全,这样任何人都无法猜测。
我试过:
$parameter = $qrcode->id;
$encryption= Crypt::encrypt($parameter);
确保路由安全的最佳方法是什么?
加密ID会生成一个很长的字符串(188+字符),不太友好。
您可以生成一个 UUID (32 characters) to represent your model. There's many packages that generates and validate UUID, for example this one。
要使用 UUID,您应该在 table 上创建一个列来表示它,并通过 uuid
字段而不是 id
.[=15= 加载模型]
由于UUID代表一个非常大的数字(128位一个),很难猜到(几乎不可能,3.402823669×10³⁸中的一个机会)。
也做猜题(概率随着你的table大小的增加而增加),你可以定期使UUID过期(或者在使用时使它失效)。有很多方法可以保护它,但这完全取决于您的应用程序设计。
由于您不需要 UUID 的 universally unique
部分,您也可以使用来自 Laravel 的 str_random()
帮助程序生成一个大的随机字符串。一个 16 个字母数字字符的字符串也很强大(4.767240171×10²⁸ 组合)。
考虑为这条路线添加一个速率限制也让它很难被猜测。
我使用这个库来散列 ID:http://hashids.org/php/
这是我对 Laravel 的包装:
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;
}