TrustHosts
sınıfı, Laravel uygulamanızın güvenliğini artırmak amacıyla kullanılan bir HTTP middleware’dir (örta katmanıdır). Bu sınıf, bir isteğin Host başlığını (header) güvendiği belirli alan adlarıyla sınırlar ve böylece HTTP Host başlığına dayalı saldırıları önlemeye yardımcı olur.
Özellikle, HTTP Host başlığı üzerinde yapılan tüm değişikliklerin geçerli olduğu bir ortamda, TrustHosts middleware’i, kötü niyetli bir kullanıcının sahte bir Host başlığı eklemesini ve uygulamanızın yönlendirmelerini bozmaya çalışmasını önler.
Middleware tanımlaması, App\Http\Middleware\TrustHosts
yolundaki TrustHosts sınıfı içinde bulunur ve bu sınıf, app/Http/Kernel.php
dosyasındaki middleware listesine eklenir.
Kısacası, TrustHosts
middleware’i, uygulamanızın güvenliğini artırmak için belirli bir alan adı veya alan adı listesine güvendiği Host başlıklarını sınırlar.
Laravel’deki TrustHosts
middleware kullanımına ilişkin bir örnek verelim.
Öncelikle, app/Http/Middleware/TrustHosts.php
dosyasında güvendiğiniz alan adlarını belirtmelisiniz. Bu örnekte, example.com
ve example.org
alan adlarına güveniyoruz:
namespace App\Http\Middleware;
use Illuminate\Http\Middleware\TrustHosts as Middleware;
class TrustHosts extends Middleware
{
/**
* Get the host patterns that should be trusted.
*
* @return array
*/
public function hosts()
{
return [
'example.com',
'example.org',
$this->allSubdomainsOfApplication(),
];
}
}
Burada hosts()
fonksiyonu, güvendiğiniz alan adlarını döndürür. Ayrıca, $this->allSubdomainsOfApplication()
fonksiyonu ile uygulamanızın tüm alt alan adlarına güvenebilirsiniz.
Daha sonra, TrustHosts
middleware’ini app/Http/Kernel.php
dosyasındaki $middlewarePriority
dizisine eklemelisiniz:
protected $middlewarePriority = [
// ...
\App\Http\Middleware\TrustHosts::class,
// ...
];
Böylece, Laravel uygulamanız yalnızca belirtilen alan adlarına ve alt alan adlarına güvenir ve bu sayede Host başlığına dayalı saldırılarla başa çıkmak için güvenliğini artırır.
Bu örnek, güvendiğiniz alan adları listesi için TrustHosts
middleware’ini nasıl yapılandıracağınızı gösterir. İsteğin Host başlığını bu belirtilen alan adlarıyla sınırlayarak, uygulamanızın güvenliğini artırabilirsiniz.