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
|
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
Posting Komentar
Silahkan sertakan nama bagi yang ingin berkomentar, Terima kasih..