محدود کردن دسترسی به پروژه لاراول از طریق آدرس IP چگونه است؟
در این قسمت از آموزش مقدماتی لاراول 5.5 به محدود کردن دسترسی به پروژه لاراول از طریق آدرس IP میپردازیم. همراه لیداوب باشید. بحث امنیت در یک وب سایت طراحی شده با لاراول اهمیت بسیاری دارد
در این قسمت از آموزش مقدماتی لاراول 5.5 به محدود کردن دسترسی به پروژه لاراول از طریق آدرس IP میپردازیم. همراه لیداوب باشید.
بحث امنیت در یک وب سایت طراحی شده با لاراول اهمیت بسیاری دارد؛ زیرا ممکن است وب سایت شما داری اطلاعات مهمی همچون اطلاعات مشتریان در یک فروشگاه اینترنتی و مواردی مشابه این باشد. در این درس از آموزش مقدماتی لاراول 5.5، این موضوع بررسی میشود
محدود کردن دسترسی به پروژه لاراول از طریق آدرس IP
بنابراین، گاهی اوقات، نیاز داریم که دسترسی به وب سایت خود را از طریق آدرس IP محدود کنیم. ممکن است بخواهیم، دسترسی به وب سایت را فقط به شبکه محلی یا یک مجموعه خاص از کامپیوترها شامل کامپیوترهای خانه و دفترکار محدود کنیم. بهترین راه برای انجام این کار در لاراول چیست؟
بیشتر بخوانید:
راه حل رسمی برای انجام این کار در لاراول وجود ندارد، اما میتوانیم از مفهوم Middleware استفاده کنیم تا بتوانیم یک کلاس برای محدود کردن دسترسی به سایت از طریق ادرس IP بسازیم.
برای این منظور، ابتدا دستور آرتیسان زیر را اجرا میکنیم:
php artisan make:middleware IPAddresses
سپس، به app/Http/Middleware/IPAddresses.php
ایجاد شده رفته و موارد زیر را اضافه میکنیم:
class IPAddresses
{
public function handle($request, Closure $next)
{
if ($request->ip() != 'xxx.xxx.xxx.xxx') {
abort(403);
}
return $next($request);
}
}
چند نکته مهم است که باید به آن توجه داشته باشید:
برای دریافت آدرس IP کلاینت چند روش وجود دارد که میتوانید از آنها استفاده کنید:
- میتوانید از
[SERVER[‘REMOTE_ADDR’_$
در PHP به صورت مستقیم استفاده کنید یا از روشی پیچیده تر مانند این استفاده کنید. - به جای
(abort(403
؛ میتوانید به یک صفحه دیگر با پیام یا خطای خاصی()redirect
کنید.
برای استفاده از کلاس Middleware باید آن را در app/Kernel.php
به صورت زیر ثبت کنید:
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
// ... other middleware classes
\App\Http\Middleware\IPAddresses::class,
];
استفاده از این روش همواره انعطافپذیر نخواهد بود. بنابراین، اگر میخواهید از یک روش کارآمدتر برای انجام این کار استفاده کنید، میتوانید این بخش را در انجمن Laracasts بررسی کنید:
namespace App\Http\Middleware;
use Closure;
use Symfony\Component\HttpFoundation\IpUtils;
class RedirectInvalidIPs
{
/**
* List of valid IPs.
*
* @var array
*/
protected $ips = [
'42.60.187.198',
'188.102.29.159',
];
/**
* List of valid IP-ranges.
*
* @var array
*/
protected $ipRanges = [
'12.64.103.24',
];
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
foreach ($request->getClientIps() as $ip) {
if (! $this->isValidIp($ip) && ! $this->isValidIpRange($ip)) {
return redirect('/');
}
}
return $next($request);
}
/**
* Check if the given IP is valid.
*
* @param $ip
* @return bool
*/
protected function isValidIp($ip)
{
return in_array($ip, $this->ips);
}
/**
* Check if the ip is in the given IP-range.
*
* @param $ip
* @return bool
*/
protected function isValidIpRange($ip)
{
return IpUtils::checkIp($ip, $this->ipRanges);
}
}:
همچنین، میتوانید از پکیج Firewall از آنتونیو ریبریو استفاده کنید که فقط محدودیت از طریق ادرس IP را شامل نمیشود و امکان ایجاد محدودیتهای بیشتری را فراهم میکند.
کتابخانه آنلاین لیداوب به تمام نیازهای شما در طراحی یک سایت حرفهای پاسخ میدهد. همچنین ما مشتاق دریافت نظرات و سوالات شما در بخش دیدگاهها هستیم.
دیدگاه ها
متاسفانه فقط اعضای سایت قادر به ثبت دیدگاه هستند
ورود به سایت