> For the complete documentation index, see [llms.txt](https://zakimaliki.gitbook.io/gofiber/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zakimaliki.gitbook.io/gofiber/basic-backend-dengan-gofiber-part-2/mengamankan-header-http-dengan-helmet-di-gofiber.md).

# Mengamankan header HTTP dengan helmet di Gofiber

Konsep keamanan header menggunakan paket `github.com/gofiber/helmet/v2` memungkinkan kita untuk meningkatkan keamanan aplikasi web dengan mengatur header HTTP yang spesifik. Berikut adalah langkah-langkahnya:

#### Langkah-langkah:

1. **Tambahkan Middleware Helmet ke Aplikasi Fiber Anda**: Middleware Helmet akan menambahkan berbagai header keamanan ke respons HTTP Anda, seperti `X-Content-Type-Options`, `X-Frame-Options`, `X-XSS-Protection`, dan lainnya.
2. **Perbarui Konfigurasi CORS (Opsional)**: Jika Anda telah mengatur konfigurasi CORS, pastikan untuk menyinkronkannya dengan header yang ditambahkan oleh Helmet.

Berikut adalah implementasi di dalam `main.go`:

```go
package main

import (
	"log"

	"github.com/gofiber/fiber/v2"
	"github.com/gofiber/fiber/v2/middleware/cors"
	"github.com/gofiber/helmet/v2"
	"github.com/joho/godotenv"
	"gofiber/src/configs"
	"gofiber/src/helpers"
	"gofiber/src/routes"
)

func main() {
	err := godotenv.Load()
	if err != nil {
		log.Fatal("Error loading .env file")
	}

	app := fiber.New()

	// Middleware Helmet
	app.Use(helmet.New())

	// Middleware CORS
	app.Use(cors.New(cors.Config{
		AllowOrigins:  "*", // Atur "*" untuk mengizinkan akses dari semua origin
		AllowMethods:  "GET,POST,PUT,DELETE",
		AllowHeaders:  "*",
		ExposeHeaders: "Content-Length",
	}))

	configs.InitDB()
	helpers.Migration()
	routes.Router(app)

	app.Listen(":3000")
}
```

Dalam kode di atas, kita telah menambahkan middleware Helmet ke aplikasi Fiber kita menggunakan `app.Use(helmet.New())`. Middleware ini akan menambahkan header keamanan yang standar ke setiap respons HTTP yang dihasilkan oleh aplikasi.

Sebelum menggunakan Helmet, respons HTTP mungkin tidak memiliki header keamanan yang diperlukan untuk melindungi aplikasi dari berbagai serangan, seperti serangan XSS (Cross-Site Scripting), clickjacking, dan penyerangan bentuk MIME.

Setelah menggunakan Helmet, respons HTTP akan memiliki header keamanan yang tepat, seperti `X-Content-Type-Options`, `X-Frame-Options`, dan `X-XSS-Protection`, yang membantu melindungi aplikasi dari berbagai ancaman keamanan.

<figure><img src="https://2761380416-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F06Yv8PBR0b4Z9oYBpPon%2Fuploads%2FT2SMnBk29qP2Yfy8YDwK%2FScreenshot%202024-05-16%20162147.png?alt=media&amp;token=6452f4be-6d97-4112-b479-2474fa25911c" alt=""><figcaption><p>Sebelum menerapkan Helmet</p></figcaption></figure>

<figure><img src="https://2761380416-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F06Yv8PBR0b4Z9oYBpPon%2Fuploads%2FB98Pkf4WdbWKWOotsyxY%2FScreenshot%202024-05-16%20162028.png?alt=media&amp;token=172e3a2d-adb3-4e6d-9b9c-98f05993df56" alt=""><figcaption><p>Setelah menerapkan Helmet</p></figcaption></figure>

Sumber : [Dokumentasi](https://github.com/goddtriffin/helmet)

{% embed url="<https://github.com/zakimaliki/basic_gofiber_part_1/tree/aa87f6506f068b92217b87e4d132719a48680a46>" %}
