Protokol HTTP

Hypertext Transfer Protocol (HTTP) adalah protokol yang paling sering digunakan pada website di internet. Protokol ini adalah protokol client-server yang digunakan untuk melakukan transfer halaman website dan data yang terdapat pada aplikasi web.

Pada protokol HTTP biasanya web browser melakukan koneksi ke web server seperti Apache Web Server dan MS IIS.

Selama proses komunikasi client dan server saling bertukar pesan. Client mengirimkan request dan server mengirimkan response. Sama seperti kita mengakses website www.cyberarmy.id via browser maka server akan mengirimkan respon berupa data yang akan ditampilkan di browser.

HTTP menggunakan protokol TCP yang berarti bahwa ketia client melakukan request ke server maka TCP harus memastikan data tersebut sampai ke server. Server kemudian akan mengirimkan data berupa status code seperti 200, 400, 403 yang menandakan respons dari web server.

Berikut adalah contoh pesan request yang dikirimkan oleh client kepada server.

GET / HTTP/1.1

Host: www.cyberarmy.id

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0

Accept: text/html,application/xhtml+xml

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate

Connection: close

 

 

 

Request diatas disebut sebagai header mulai dari “GET” sampai “Connection”. Kita jelaskan satu-persatu :


GET / HTTP/1.1

Dalam proses request terdapat beberapa metode yang dapat dilakukan. Kata “GET” merupakan salah satu contohnya. Metode lainnya adalah POST, PUT, OPTIONS dan TRACE.

 

Metode GET digunakan Ketika kita ingin mengakses sebuah resource pada website, bisa jadi itu halaman index, halaman kontak yang biasanya kalau di HTML namanya contact.html

 

Metode POST digunakan apabila kita ingin mengirimkan data ke server, biasanya digunakan untuk mengirimkan data form registrasi, login dan lain-lain.

 

Metode lainnya anda bisa explore sendiri. Karena pada prakternya yang paling sering digunakan adalah metode GET dan POST.

 

GET / HTTP/1.1

Setelah metode request anda bisa melihat ada path (/) anda versi protokol HTTP/1.1

 

Path ini menginformasikan ke server halaman/resource apa yang akan di load. Misalnya kita ingin mengakses halaman contact.html, maka requestnya adalah :

GET /contact.html HTTP/1.1

Host: www.cyberarmy.id

Header HOST menginformasikan nama domain dan port tujuan kita.

User-Agent: Mozilla/5.0 (Windows NT 10.0;

User Agent menginformasikan ke server apa yang aplikasi yang dipakai oleh client untuk menghubungi server. Dalam contoh ini saya menggunakan Mozilla Firefox. Selain itu header ini juga memberikan informasi sistem operasi apa yang client gunakan.

Accept: text/html,application/xhtml+xml

Header Accept menginformasikan ke server tipe dokumen apa yang ingin kita minta. Dalam hal ini saya mencoba meminta tipe dokumen text,html,xhtml dan xml.

Accept-Language: en-US,en;q=0.5

Sema seperti Accept, Accept-Language meingiformasikan kepada server untuk memberikan resource dengan Bahasa yang dimengerti oleh client.

Accept-Encoding: gzip, deflate

Accept-Encoding memberikan informasi ke server sistem kompresi apa yang didukung oleh client. Dalam hal ini adalah gzip dan deflate. Encoding biasanya digunakan untuk mempercepat loading website.

Connection: close

Header Connection berfungsi untuk mengontrol apakah koneksi antara server dan client akan terus terbuka atau setelah resource di load koneksi antara server dan client langsung mengentikan koneksi.

 

Setelah mengetahui pesan request yang dikirimkan oleh client kepada server. Selanjutnya kita akan melihat contoh respon yang dikirimkan oleh server kepada client sebagai berikut.

HTTP/1.1 200 OK

Date: Sat, 09 May 2020 05:47:59 GMT

Content-Type: text/html; charset=UTF-8

Content-Length: 69312

Connection: close

Server: Apache

 


<KONTEN>

 

Seperti yang anda lihat, pada HTTP Response. Terdapat Pesan yang dikirimkan kepada client yaitu <KONTEN> yang di request oleh client.

HTTP/1.1 200 OK

Baris pertama dari Respons Header ini menunjukkan status dari web server diikuti dengan protokol HTTP/1.1. Status code ada bermacam-macam, ada status 200 yang menandakan bahwa resource yang kita minta tersedia, status 404 resource tidak tersedia, 403 forbidden (tidak diizinkan untuk mengakses) dan status code lainnya.

Date: Sat, 09 May 2020 05:47:59 GMT

Header date menandakan kapan respons tersebut dikirim dari server

Content-Type: text/html; charset=UTF-8

 

Content-Type memberikan informasi kepada client bagaimana cara memproses pesan yang dikirim oleh server. Dalam hal ini server mengirimkan tipe dokumen html.

Content-Length: 69312

Content Length menginformasikan kepada client jumlah besaran data yang dikirim dari server.

Server: Apache

Server header menginformasikan aplikasi apa yang digunakan oleh web server. Terkadang header ini tidak ada (opsional)

 

Itulah sekilas tentang protokol HTTP. Namun protokol HTTP ini memiliki kelemahan karena tidak adanya enkripsi, sehingga semua request dan response yang kita lakukan akan mudah terbaca oleh mas-mas hacker yang mungkin melakukan Man In The Middle Attack (MITM). Lalu? Bagaimana cara kita mengamankan HTTP? Jawabannya adalah menggunakan HTTP Secure (HTTPS). HTTPS atau disebut juga HTTP Over SSL/TLS merupakan protokol HTTP yang menggunakan kriptografi agar proses komunikasi antara client dan server terenkripsi sehingga mas-mas hacker yang ingin melakukan sniffing (penyadapan) akan sulit untuk membaca data yang dikirimkan antara client dan server.

PERLU DIINGAT! Bahwa HTTPS tidak bisa mengamankan celah yang terdapat pada website. Enkripsi yang terdapat pada HTTPS hanya melindungi data yang dikirimkan antara client dan server contohnya HTTP Header yang telah kita bahas sebelumnya. Celah keamanan seperti Remote Command Execution, SQL Injection, XSS dan lain-lain tidak bisa diamankan oleh HTTPS. Maka dari itu sangat penting untuk kita mengetahui bagaimana cara kerja protokol HTTP dan aplikasi web itu sendiri. Pemahaman ini akan sangat berguna pada saat nanti merencanakan exploitasi website agar efektif.

Saya sudah menyediakan sebuah video tentang HTTP dan HTTPS untuk menambah pemahaman teman-teman. Sangat dianjurkan untuk ditonton.



Komentar

Postingan populer dari blog ini

import address list nice mikrotik

Pengertian chain pada packet flow mikrotik

Transparent Proxy pada Hotspot Server