Mikail.Net

Yazılımcı günlüğü

TrustHosts

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.