Cara Mengkonfigurasi Header Keamanan Laravel - CRUDPRO

Cara Mengkonfigurasi Header Keamanan Laravel

Belum lama ini, saya membaca artikel bagus Scott Helme tentang header keamanan . Jika Anda ingin tahu lebih banyak tentang header ini, saya sarankan membaca sendiri artikelnya. Saya telah menambahkan header keamanan ke situs web ini dan saya ingin menunjukkan bagaimana hal itu dilakukan.

Langkah 1: Header Keamanan Laravel

Saya menggunakan paket bepsvpt/laravel-security-header untuk menambahkan header keamanan. Mendukung beberapa header tambahan selain semua header utama. File konfigurasi berisi tautan ke situs web dengan informasi lebih lanjut. Konfigurasi saya saat ini terlihat seperti ini:

<?php

$protocol = 'https://';
if (! isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == 'off') {
    $protocol = 'http://';
}

return [
    'x-content-type-options' => 'nosniff',
    'x-download-options' => 'noopen',
    'x-frame-options' => 'sameorigin',
    'x-permitted-cross-domain-policies' => 'none',
    'x-xss-protection' => '1; mode=block',
    'referrer-policy' => 'unsafe-url',
    'hsts' => [
        'enable' => env('SECURITY_HEADER_HSTS_ENABLE', false),
        'max-age' => 31536000,
        'include-sub-domains' => true,
    ],
    'hpkp' => [
        'hashes' => false,
        'include-sub-domains' => false,
        'max-age' => 15552000,
        'report-only' => false,
        'report-uri' => null,
    ],
    'custom-csp' => env('SECURITY_HEADER_CUSTOM_CSP', null),
    'csp' => [
        'report-only' => false,
        'report-uri' => env('CONTENT_SECURITY_POLICY_REPORT_URI', false),
        'upgrade-insecure-requests' => false,
        'default-src' => [
            'self' => true,
        ],
        'script-src' => [
            'allow' => [
                $protocol.'ajax.googleapis.com',
                $protocol.'code.jquery.com',
                $protocol.'www.googletagmanager.com',
                $protocol.'www.google-analytics.com',
            ],
            'self' => true,
            'unsafe-inline' => true,
            'unsafe-eval' => true,
            'data' => true,
        ],
        'style-src' => [
            'allow' => [
                $protocol.'fonts.googleapis.com',
            ],
            'self' => true,
            'unsafe-inline' => true,
        ],
        'img-src' => [
            'allow' => [
                $protocol.'www.google-analytics.com',
            ],
            'self' => true,
            'data' => true,
        ],
        'font-src' => [
            'allow' => [
                $protocol.'fonts.gstatic.com',
            ],
            'self' => true,
            'data' => true,
        ],
        'object-src' => [
            'allow' => [],
            'self' => false,
        ],
    ],
];
Beberapa catatan:
  • Aktifkan Strict-Transport-Security hanya jika Anda memiliki sertifikat SSL. Dan Anda mungkin hanya perlu mengaktifkannya di lingkungan produksi.
  • Lihat paragonie/csp-builder untuk mengonfigurasi header Content-Security-Policy. Ini adalah ketergantungan yang digunakan oleh bepsvpt/laravel-security-header.
  • Penyematan Kunci Publik HTTP terdengar sedikit menakutkan, tetapi kesalahan mungkin sulit untuk diselesaikan. Saya bukan ahli kunci SSL atau CSR, jadi saya belum mengaktifkan header ini.

Langkah 2: Uji penyiapan

Uji tajuk di browser Anda. Anda harus sedikit mengubah CSP untuk mengaktifkan Google Analytics, widget, dan lainnya. Kemudian pindai situs web dengan proyek lain oleh Scott Helme, securityheaders.io. Ini memindai tajuk Anda dan memberikan beberapa saran tentang apa yang dapat Anda tingkatkan.

Langkah 3: Konfigurasikan URI laporan

Jika browser menemukan konten yang melanggar Kebijakan Keamanan Konten, browser dapat melaporkan hal ini. URI yang dilaporkan dapat dikonfigurasi di header CSP itu sendiri.

Layanan hebat (dan gratis) yang Anda gunakan untuk ini adalah report-uri.comSekali lagi, ini dibuat oleh Scott Helme, ini menjadi canggung. Setelah menyiapkan laporan-uri pribadi Anda, Anda dapat melihat laporan untuk konten yang melanggar CSP Anda.

Adakah tips menggunakan header keamanan? Bagikan pemikiran Anda! Apakah Anda mengalami masalah dalam menggunakan langkah-langkah ini? Jangan takut untuk bertanya!