TDCTF Academy Logo TDCTF ACADEMY

HTTP/HTTPS

Hypertext Transfer Protocol (HTTP)

HTTP adalah protokol aplikasi yang menjadi fondasi komunikasi data di World Wide Web. HTTP mengikuti model request-response klasik, di mana klien (biasanya web browser) mengirim permintaan ke server, dan server mengembalikan respons.

HTTP Methods

Setiap permintaan HTTP memiliki method yang menunjukkan aksi yang diinginkan:

  • GET - Mengambil sumber daya dari server. Tidak memiliki request body dan bersifat idempoten (aman diulang tanpa efek samping).
  • POST - Mengirim data ke server untuk membuat sumber daya baru. Tidak idempoten.
  • PUT - Memperbarui sumber daya secara penuh di server. Idempoten.
  • DELETE - Menghapus sumber daya dari server. Idempoten.
  • PATCH - Memperbarui sebagian sumber daya. Tidak selalu idempoten.
  • OPTIONS - Mengetahui metode HTTP apa yang didukung oleh server untuk suatu endpoint.
  • HEAD - Sama seperti GET, tetapi server hanya mengembalikan header tanpa body. Berguna untuk pengecekan metadata.

HTTP Status Codes

Server mengembalikan status code tiga digit untuk mengindikasikan hasil permintaan:

Kategori Rentang Contoh
1xx - Informational 100 - 199 100 Continue, 101 Switching Protocols
2xx - Success 200 - 299 200 OK, 201 Created, 204 No Content
3xx - Redirection 300 - 399 301 Moved Permanently, 302 Found, 304 Not Modified
4xx - Client Error 400 - 499 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests
5xx - Server Error 500 - 599 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable

HTTP Headers

Header HTTP mengirimkan metadata tambahan dalam permintaan dan respons.

Request Headers (dikirim oleh klien):

  • Host - Nama server tujuan (wajib di HTTP/1.1).
  • User-Agent - Identitas perangkat lunak klien.
  • Accept - Tipe konten yang dapat diterima klien.
  • Authorization - Kredensial untuk autentikasi.
  • Cookie - Mengirim cookie yang tersimpan.
  • Content-Type - Tipe konten dalam body permintaan (misal application/json).

Response Headers (dikirim oleh server):

  • Set-Cookie - Menginstruksikan klien untuk menyimpan cookie.
  • Cache-Control - Arahan caching untuk browser dan proxy.
  • Access-Control-Allow-Origin - Pengaturan CORS untuk keamanan lintas domain.
  • Strict-Transport-Security - Memaksa koneksi HTTPS (HSTS).

HTTPS dan TLS

HTTPS (HTTP Secure) adalah versi aman dari HTTP yang berjalan di atas protokol TLS (Transport Layer Security).

TLS Handshake

Sebelum data terenkripsi dikirim, klien dan server melakukan TLS handshake:

  1. Client Hello - Klien mengirim versi TLS, daftar cipher suite, dan nomor acak.
  2. Server Hello - Server memilih cipher suite, mengirim sertifikat SSL, dan nomor acak.
  3. Certificate Verification - Klien memverifikasi sertifikat server terhadap Certificate Authority (CA) yang terpercaya.
  4. Key Exchange - Klien menghasilkan pre-master secret, mengenkripsinya dengan kunci publik server, dan mengirimkannya.
  5. Session Keys - Kedua pihak menurunkan session key simetris dari pre-master secret.
  6. Secure Connection - Semua data selanjutnya dienkripsi menggunakan session key simetris.

SSL Certificates

Sertifikat SSL/TLS adalah dokumen digital yang mengikat identitas sebuah situs web dengan kunci publik. Sertifikat diterbitkan oleh Certificate Authority (CA) yang tepercaya. Jenis sertifikat meliputi:

  • Domain Validation (DV) - Verifikasi kepemilikan domain saja.
  • Organization Validation (OV) - Verifikasi kepemilikan domain dan identitas organisasi.
  • Extended Validation (EV) - Verifikasi paling ketat, menampilkan nama organisasi di bilah alamat browser.

HSTS (HTTP Strict Transport Security)

HSTS adalah mekanisme keamanan yang memaksa browser untuk hanya berkomunikasi dengan server melalui HTTPS. Server mengirim header Strict-Transport-Security yang memberi tahu browser untuk secara otomatis mengonversi semua tautan HTTP menjadi HTTPS untuk periode waktu tertentu (max-age). Ini mencegah serangan SSL stripping.


HTTP/2 vs HTTP/1.1

HTTP/2 membawa sejumlah peningkatan signifikan dibanding HTTP/1.1:

  • Multiplexing - HTTP/1.1 hanya dapat mengirim satu permintaan per koneksi TCP (head-of-line blocking). HTTP/2 memungkinkan banyak permintaan dan respons dikirim secara bersamaan melalui satu koneksi.
  • Server Push - Server dapat mengirim sumber daya tambahan (seperti CSS/JS) tanpa diminta klien.
  • Header Compression - HTTP/2 menggunakan HPACK untuk mengompresi header, mengurangi overhead.
  • Binary Protocol - HTTP/1.1 berbasis teks (mudah dibaca tetapi lambat diparsing). HTTP/2 berbasis biner yang lebih efisien.
  • Prioritization - HTTP/2 memungkinkan klien menentukan prioritas sumber daya yang diminta.

Meskipun HTTP/2 lebih canggih, sebagian besar browser modern tetap menyediakan fallback ke HTTP/1.1 jika server tidak mendukung HTTP/2. Keamanan tetap dijamin selama HTTPS digunakan di kedua versi.

PADA HALAMAN INI