Anda di halaman 1dari 5

Teknologi Websocket

1. Pendahuluan

Websocket adalah standar baru untuk komunikasi realtime pada web dan aplikasi mobile. Websocket
dirancang untuk diterpakan di browser web dan server web. Namun, dapat digunakan oleh aplikasi client
atau server. Websocket merupakan protokol yang menyediakan saluran komunikasi full-duplex
(komunikasi dua arah secara bersamaan) melalui koneksi TCP tunggal.

Websocket itu sendiri termasuk bagian dari HTML 5 dimana menghadirkan pengurangan bsar dalam lalu-
lintas jaringan yang tidak penting dan latency dibandingkan dengan solusi polling dan long-polling yang
telah digunakan untuk mensimulasikan koneksi dua arah dengan cara menjaga dua koneksi tetap
terhubung.

2. Sejarah Websocket

Websocket pertama kali digunakan sebagai TCP Connection dalam spesifikasi HTML 5, sebagai tempat
untuk berbasis TCP socket API. Pada bulan Juni 2008, nama websocket diciptakan oleh Ian Hickson dan
Michael Carter, serangkaian diskusi yang dipimpin oleh Michael Carter yang mengakibatkan versi pertama
dari protokol dikenal sebagai Websocket.

3. Cara Kerja Websocket

Websockets menyediakan koneksi terus-menerus antara klien dan server yang dapat kamu gunakan di
kedua belah pihak untuk memulai mengirim data kapan saja.

Klien membuat koneksi websocket melalui proses yang biasa dikenal sebagai websocket handshake. Proses
ini dimulai dengan klien yang mengirimkan permintaan HTTP reguler ke server. Permintaan ini
menginformasikan server yang klien ingin membuat sambungan ke websocket.

4. Permasalahan yang dapat diselesaikan dengan Websockets

Latar belakang yang mendasari terciptanya websocket adalah permintaan beberapa client yang
mengharuskan developer bisa membuat aplikasi berbasis web secara realtime.

Aplikasi realtime adalah ketika ada perubahan data maka saat itu juga website di browser klien juga ada
perubahan. Minimal muncul notifikasi. Ada alternatif lain untuk permasalahan developer tersebut,
diantaranya adalah metode polling dan long polling yaitu:

4.1. Metode polling mengirimkan request data ke server secara terus menerus. Apabila hanya satu
client yang melakukan request berulang seperti itu, mungkin tidak masalah, namun bagaimana jika
ada beberapa client yang mengakses satu server dan berulangkali melakukan metode polling, maka
server akan sibuk dan rentan terkena serangan DDOS.
4.2. Metode long polling adalah metode polling dengan interval waktu yang berkala. Jadi request tidak
sesering metode polling. Manfaatnya adalah server jauh lebih stabil dibandingkan dengan metode
polling. Namun permasalahannya adalah long polling tidak menjawab realtime karena ada interval
waktu yang digunakan.
WebSockets menjadi semakin populer karena sangat menyederhanakan komunikasi antara client dan
server. Protokol WebSocket menggunakan lapisan aplikasi model OSI (Layer 7) untuk memungkinkan
client dan server melakukan komunikasi dua arah (duplikat penuh). Ini memungkinkan Anda membuat
aplikasi web waktu nyata yang dinamis seperti aplikasi perpesanan instan dan berbagi foto.

WebSockets mengatasi beberapa batasan komunikasi tradisional antara browser dan server:

• Client Requests/Server Responds – Server sebelumnya memiliki listener yang permananen.


client (client yang menggunakan browser) tidak memiliki listener tetap untuk koneksi jangka
panjang. Ini berkisar pada request client dan responds server.
• Communication Dependent On Client – Server dapat mendorong sumber daya ke client hanya
ketika client memintanya.
• Continual Checking – client selalu dipaksa untuk memperbarui hasil dari server. Itu sebabnya
perpustakaan berfokus pada pengoptimalan semua panggilan asinkron. Mereka juga harus
mengidentifikasi reaksi mereka. Solusi paling umum untuk moriginah ini adalah dengan
menggunakan fungsi callback.

WebSockets mengatasi penundaan yang melekat dalam komunikasi satu arah dari client ke browser. Pada
http[s]:// protocol, client memulai request dan menunggu responds. Ini disebut transaksi. Setiap
request/responds memulai transaksi yang berbeda, dan setiap transaksi memiliki overhead. ws[s]:// Dalam
protokol, WebSockets menggunakan beberapa request dan responds untuk memulai transaksi jangka
panjang. Server juga dapat mengirim data tanpa request sebelumnya, yang membuat komunikasi jauh lebih
efisien.

5. Kelemahan dan Kelebihan Websocets


5.1. Kelemahan Websocets

1. Serangan DOS (Denial-of -Service)

WebSockets memungkinkan untuk mencapai jumlah koneksi yang tidak terbatas ke server . Hal ini
memungkinkan penyerang membanjiri server dengan serangan DOS. Ini memberikan banyak
tekanan pada server dan kehabisan sumber daya di server itu. Setelah itu, situs web akan jauh lebih
lambat.

2. Tidak Ada Sertifikasi Selama Proses Handshake

Masalah di sini adalah bahwa dengan protokol WebSocket, server tidak dapat mengotentikasi client
selama proses Handshake. Hanya mekanisme koneksi HTTP biasa yang tersedia. Ini termasuk
otentikasi dan cookie HTTP dan TLS. Handshake yang ditingkatkan akan terus terjadi dari HTTP
ke WebSockets. Namun, HTTP mengirimkan kredensial langsung ke WS. Ini dapat dieksploitasi
dan serangan ini disebut pembajakan WebSocket lintas situs.

3. Saluran TCP Tidak Terenkripsi

Masalah lain dengan WebSockets adalah mereka dapat digunakan dengan saluran TCP
yang tidak terenkripsi.
4. Kerentanan Pada Serangan Input Data

Bagaimana jika komponen tersebut rentan terhadap serangan data input berbahaya?
Teknik seperti skrip lintas situs. Ini adalah serangan umum tetapi sangat berbahaya yang
dapat menyebabkan kerusakan signifikan pada situs web .

5. Data Masking

Data Masking bukanlah hal yang buruk. Protokol WebSocket menggunakan ini untuk
mencegah keracunan cache proxy, dll. Namun, ada moriginah. Masking memblokir tindakan
seperti alat keamanan yang mengidentifikasi pola lalu lintas.Perangkat lunak seperti DLP (Data
Loss Prevention) bahkan tidak mengenali keberadaan WebSockets. Hal ini membuat tidak mungkin
untuk melakukan analisis data pada lalu lintas WebSocket. Ini mencegah program perangkat lunak
ini mengidentifikasi JavaScript berbahaya, pelanggaran data, dan sebagainya.

6. Ootorisasi/Otentikasi WebSocket

Kelemahan utama dari protokol WebSocket adalah tidak menanganiotorisasi/otentikasi. Protokol


tingkat aplikasi harus menangani ini satu per satu. Terutama ketika data sensitif Ditransfer.

7. Tunneling

WebSocket memungkinkan siapa pun untuk melakukan tunnel layanan TCP apa pun.
Contohnya adalah tunneling koneksi database secara langsung untuk mencapai browser. Dalam
kasus Serangan skrip lintas situs, itu berkembang dan menjadi pelanggaran keamanan total.

8. Sniffing

Transfer data melalui protokol WebSocket adalah teks biasa, mirip dengan HTTP. Oleh
karena itu, data ini rentan terhadap serangan man-in-the-middle. Menggunakan protokol
WebSocket Secure (wss://) untuk mencegah kebocoran informasi. Seperti HTTPS, wss tidak
berarti bahwa aplikasi web aman, tetapi memastikan bahwa transmisi data Anda dienkripsi
menggunakan Transport Layer Security (TLS).

5.2. Kelebihan WebSockets:

1. Menggunakan WSS

Menggunaan protokol wss:// yang jauh lebih aman. Karena WSS aman, ia mencegah serangan
man-In - the-middle dan sebagainya. Transportasi yang aman mencegah banyak serangan dari
awal. Kesimpulannya, WebSocket bukanlah implementasi soket standar. WebSockets
serbaguna, koneksi yang dibuat selalu terbuka, dan pesan dapat dikirim dan diterima terus
menerus. Namun, serangan DOS, tidak ada otentikasi/otorisasi, dan serangan entri data
semuanya rentan terhadap eksploitabilitas. Oleh karena itu, penting untuk menggunakan input
client dan validasi data server, otentikasi berbasis tiket, dan WSS.
2. Verifikasi Input Client

Data apa saja pada Koneksi WebSocket dapat dengan mudah dibuat di luar browser.
Menangani data sewenang-wenang apa pun yang terjadi. Data ini perlu divalidasi dan data lain
dari client divalidasi sebelum data diproses. mengapa? Karena serangan injeksi seperti OS,
SQL, dan Blind SQL dimungkinkan melalui WebSocket.

3. Verifikasi Data Server

Tidak Perlu Khawatir Hanya Memvalidasi Data Client. Data yang dikembalikan oleh server
juga bisa bermasalah. Pesan yang diterima di sisi client harus selalu diperlakukan sebagai data.
Kami tidak menyarankan untuk menetapkan pesan ini secara langsung ke DOM atau
mengevaluasinya sebagai kode. Untuk respons JSON, gunakan JSON.parse() dalam
kombinasi dengan penanganan pengecualian dan, jika perlu, menggunakan metode sanitasi
khusus untuk menguraikan data dengan aman.

4. Otentikasi Berbasis Tiket

1. Sistem otentikasi berbasis tiket yang bekerja sebagai berikut:


2. Ketika kode sisi client mencoba membuka WebSocket, itu terhubung ke server HTTP dan
memungkinkan kode sisi client untuk mendapatkan tiket (disetujui).
3. Ini akan menghasilkan tiket yang mencakup ID pengguna/akun, IP orang yang meminta
tiket, cap waktu, dan penyimpanan catatan internal lainnya.
4. Tiket disimpan di server/database dan dikembalikan ke client
5. Client sekarang dapat membuka koneksi WebSocket dan mengirim tiket ini dengan
Handshake pertama.
6. Server sekarang memiliki opsi seperti perbandingan tiket, peringkat IP sumber, dan
verifikasi keamanan tiket (jika digunakan kembali).
7. Jika semuanya diperiksa, koneksi WebSocket akan diverifikasi

5. Rate Limiting

Batas tarif adalah cara penting untuk mencegah penyalahgunaan aplikasi atau layanan web.
Untuk menerapkan rate limiting, tetapkan "tempat" untuk semua pengguna dan tentukan
parameter berikut:

• Jumlah lalu lintas WebSocket yang dikirim pengguna per detik


• Jumlah lalu lintas yang dapat ditangani server dengan aman per detik
• Lalu lintas dari pengguna yang sama yang melebihi kapasitas server harus antri
• Server harus mengizinkan periode waktu tunggu tertentu. Hal ini memungkinkan lalu
lintas burst oleh client diikuti oleh periode tenang selama serverdapat memproses antrian.
• Pesan dalam antrian harus dibuang setelah batas waktu

6. Origin Header

Standar WebSocket memungkinkan Anda untuk menentukan field origin header. Ini mirip
dengan AJAX X-Requested-With header. Tentukan dari host mana koneksi WebSocket
berorigin. Jika tidak, client dapat berkomunikasi dengan host mana pun melalui protokol
WebSocket origin Header adalah saran dan dapat dipalsukan oleh penyerang. Namun,
penyerang masih perlu mengubah Origin header di browser client. Ini diblokir oleh browser
modern di sebagian besar situasi. Oleh karena itu, menyetel field origin adalah ide yang
bagus, tetapi Anda tidak boleh memercayainya untuk autentikasi. Selalu gabungkan dengan
cookie atau mekanisme otentikasi Lainnya.

7. Keamanan WebSocket dengan Bright

Cara terbaik untuk memperbaiki kerentanan keamanan WebSocket adalah dengan


menggunakan Bright, solusi pengujian keamanan kotak hitam yang melihat aplikasi, API, atau
WebSocket untuk menemukan kerentanan Bright adalah pemindai otomatis yang secara
independen mendeteksi kerentanan keamanan tanpa bantuan manusia. Ini adalah obat yang
bagus karena anda dapat dengan cepat mengidentifikasi kerentanan keamanan di WebSockets,
mengirim peringatan dengan panduan perbaikan ke pengembang, dan secara otomatis
membuka tiket dengan alat pelacakan bug.

Referensi :

1. https://www.crudpro.com/2022/04/kerentanan-dan-solusi-pada-keamanan.html
2. https://caraguna.com/pengertian-websocket-dan-fungsinya/

Anggota :
1. Panca Kurniawan
2. Prasetyo Aji

Anda mungkin juga menyukai