Perbedaan Local Storage (Frontend) vs Server (Backend)

Perbandingan Frontend vs Backend

HTML, CSS, dan JavaScript adalah teknologi frontend yang berjalan di sisi klien (browser), digunakan untuk menyusun struktur, tampilan, dan interaktivitas halaman web.

Sebaliknya, PHP, Node.js, DB, atau Python digunakan di sisi backend (server), yang berfungsi untuk mengolah data, mengelola database, dan menangani autentikasi. Backend adalah bagian dari aplikasi yang berjalan di server — tidak terlihat langsung oleh pengguna.

HTML dan CSS tidak dapat dikonversi langsung ke backend karena HTML hanya berfungsi sebagai struktur, dan CSS untuk tampilan, bukan logika pemrosesan data. Demikian pula, JavaScript di frontend hanya bisa melakukan interaksi di sisi klien, dan tidak bisa menggantikan peran backend.

Meski begitu, frontend dan backend bisa dihubungkan melalui integrasi, bukan konversi. Frontend dapat mengirim permintaan ke backend menggunakan metode seperti fetch() atau axios, dan backend akan merespons dengan data (JSON) atau HTML yang telah diolah.

Proses ini memungkinkan terjadinya komunikasi dua arah antara browser dan server, menciptakan interaktivitas penuh dalam mini proyek seperti sistem login, komentar, atau kalkulasi data berdasarkan input pengguna.

Untuk alasan keamanan, jangan pernah menyimpan API key, token, password, atau informasi rahasia di frontend atau localStorage. Data sensitif tersebut harus disimpan dan dikelola di backend/server.

Backend jauh lebih aman karena data tidak terekspos langsung ke pengguna, dapat dikontrol melalui hak akses dan autentikasi, serta lebih sulit dimodifikasi dari luar. Server sendiri merupakan lokasi fisik atau virtual tempat backend dijalankan.

Dalam arsitektur web modern, backend sering berkomunikasi dengan database seperti MySQL, PostgreSQL, atau MongoDB, dan menyediakan API untuk layanan seperti login, pendaftaran, penyimpanan data, dan lainnya.

Perbandingan Frontend vs Backend

Aspek Frontend (Lokal / Browser / HP) Backend (Server)
Lokasi Di perangkat pengguna Di komputer/server jauh
Aksesibilitas Terlihat & bisa dimodifikasi Tidak terlihat langsung
Contoh teknologi HTML, CSS, JavaScript PHP, Node.js, Python, DB
Aman untuk rahasia? ❌ Tidak aman (bisa dilihat di DevTools) ✅ Lebih aman
Contoh penyimpanan localStorage, file lokal Database, file server
Fungsi utama Struktur & Tampilan Logika, Proses Data, Autentikasi
Tempat berjalan Berjalan di Browser (Client) Berjalan di Server
Akses database Tidak bisa langsung mengakses database Bisa mengakses dan mengolah database
Konversi Tidak bisa dikonversi ke backend Menghasilkan HTML untuk dikirim ke frontend
Komunikasi Kirim permintaan (fetch, AJAX) Terima permintaan dan kirim respon (JSON, HTML)

Perbedaan File Lokal (Frontend) dan File Server (Backend)

✅ 1. File Lokal (Frontend / Browser)

File lokal adalah file yang dijalankan di sisi pengguna, seperti HTML, CSS, dan JavaScript. File ini bisa diakses langsung oleh browser dan terlihat oleh pengguna.

Letak biasanya: Folder proyek lokal, atau dibuka langsung lewat file explorer.
Contoh: C:/Users/NamaAnda/Documents/Proyek/index.html

Jenis File Contoh
HTML index.html
CSS style.css
JavaScript app.js
Media gambar.jpg, video.mp4
Penyimpanan Browser localStorage, sessionStorage

✅ 2. File Server (Backend / Server-side)

File server adalah file yang dijalankan di sisi server dan tidak terlihat langsung oleh pengguna. File ini bertugas memproses data, mengakses database, dan menangani permintaan dari frontend.

Letak biasanya: Folder backend/server seperti:
/var/www/html/ atau backend/routes/

Jenis File Contoh
PHP Script login.php, proses_data.php
Node.js File server.js, routes/api.js
Python Backend app.py, main.py
Database MySQL, MongoDB, data.sqlite
Konfigurasi & Template .env, config.json, layout.ejs

✅ Penyimpanan Lokal (Local Storage)

Penyimpanan yang terjadi di perangkat pengguna (komputer, HP, tablet, dll). Tidak butuh koneksi internet untuk diakses (selama tidak dihapus pengguna).

Jenis Penyimpanan Penjelasan
localStorage / sessionStorage Penyimpanan berbasis browser (hanya bisa dibaca oleh JavaScript).
IndexedDB Database lokal dalam browser untuk menyimpan data dalam jumlah besar.
Cookie Data kecil yang disimpan browser, bisa dikirim ke server.
File di Folder HP/PC Misalnya dokumen .txt, foto .jpg, dsb.
App Storage (Android/iOS) File yang disimpan oleh aplikasi di memori internal.

📱 Suatu file, seperti .txt di Penyimpanan Lokal

Jika suatu file, seperti file .txt, berada di dalam perangkat (misalnya di folder Download atau Documents di HP atau komputer), maka ✅ termasuk penyimpanan lokal karena file tersebut dapat dibuka tanpa koneksi internet.

Namun, file tersebut ❌ tidak dapat dibuka jika mengalami masalah berikut:

  • Format file rusak atau tidak valid.
  • Tidak tersedia aplikasi pembuka yang sesuai (misalnya text editor).
  • Izin akses ke penyimpanan dibatasi (misalnya perlu izin untuk membaca file atau akses storage).

✅ Penyimpanan Server

Penyimpanan yang terjadi di komputer server (jauh dari pengguna). Pengguna harus terhubung internet untuk mengakses.

Jenis Penyimpanan Penjelasan
Database server (MySQL, MongoDB) Tempat menyimpan data dinamis, seperti akun, pesan, dsb.
File Storage (.txt, .pdf, dll) Disimpan di server seperti Apache, Nginx, CDN, dll.
Cloud Storage (Google Drive, Amazon S3) File disimpan di server milik pihak ketiga.
Backend API Response Data dikirim lewat HTTP API dari server ke frontend.

🌐 Suatu file, seperti .txt dari Tautan (URL) di Penyimpanan Server

Jika suatu file seperti .txt berasal dari link atau tautan online, maka ✅ termasuk penyimpanan server, karena file tersebut disimpan di komputer/server yang terhubung ke internet.

Namun, file mungkin ❌ tidak bisa diakses jika terjadi beberapa kendala berikut:

  • Server membutuhkan login atau autentikasi (misalnya token, username/password).
  • Format MIME (Multipurpose Internet Mail Extensions) tidak dikenali oleh perangkat.
    • Contoh MIME: text/plain (untuk .txt), application/pdf, image/jpeg.
    • Jika MIME tidak sesuai, file bisa gagal dibuka atau didownload dengan benar.
  • HP atau perangkat tidak memiliki aplikasi pembuka yang sesuai (misalnya editor teks atau PDF reader).
  • File terenkripsi atau menggunakan format khusus yang tidak kompatibel dengan perangkat pengguna.

✅ Contoh Kode Penyimpanan Lokal & Server

📁 Penyimpanan Lokal (Browser)

1. Kode menyimpan dan membaca data dari localStorage menggunakan HTML5, CSS, dan JavaScript:

2. Form HTML Upload (dalam folder public/index.html):

🌐 Upload & Akses File di Server (Backend)

1. upload dan membaca suatu file seperti file .txt melalui server menggunakan Node.js + Express:

2. Versi Lain (Opsional)

  • PHP: Gunakan file_get_contents() dan $_FILES untuk upload & baca file.
  • React: Gunakan fetch() atau axios untuk upload ke backend.
  • Python (Flask/FastAPI): Gunakan request.files untuk meng-handle file upload.
  • Cloud Storage (Firebase, Amazon S3): Upload menggunakan SDK masing-masing dan amankan URL akses file.

🔒 Keamanan

  • File lokal (frontend) bisa dilihat dan dimodifikasi pengguna melalui DevTools, sehingga tidak aman untuk menyimpan rahasia. File lokal bisa aman atau tidak, tergantung siapa yang bisa mengakses perangkat pengguna. Semua kunci, salt, dan IV tetap bisa dilihat oleh pengguna lewat "View Source" atau DevTools.
  • File server (backend) tidak bisa diakses langsung oleh pengguna, sehingga lebih aman untuk menyimpan API key, password, dan data sensitif lainnya. File server biasanya lebih aman jika disimpan dengan autentikasi, enkripsi, dan tidak langsung terbuka tanpa izin. Keamanan lebih tinggi karena kunci dan proses enkripsi tidak terekspos ke pengguna.
  • Selalu simpan rahasia di sisi backend dan bukan di localStorage atau file JavaScript frontend.
  • Enkripsi & Dekripsi seperti AES-256 dengan Salt & IV bisa dilakukan di Frontend maupun Backend, tapi kapan dan di mana tergantung kebutuhan keamanan.

🔒 Tabel Enkripsi & Dekripsi seperti AES-256 dengan Salt & IV

Aspek Frontend (CryptoJS / JavaScript) Node.js (crypto module) PHP (openssl) Python (PyCryptodome)
Librari CryptoJS.AES require('crypto') openssl_encrypt() Crypto.Cipher.AES
Kunci (Key) String biasa, di-hash ke 256-bit crypto.pbkdf2 atau Buffer String biasa (hasil hash SHA256 jika perlu) PBKDF2 atau langsung kunci 32-byte
Salt Opsional (manual) Didukung & disarankan Bisa disisipkan manual Disarankan (gunakan PBKDF2)
IV (Initialization Vector) Manual (harus generate sendiri) crypto.randomBytes(16) openssl_random_pseudo_bytes() get_random_bytes(16)
Mode AES-256-CBC atau CTR AES-256-CBC, GCM, dll AES-256-CBC AES.MODE_CBC, GCM, dsb
Encoding Output Base64 (atau Hex) Base64 atau Buffer Base64, Hex Base64 (gunakan binascii)
Kompatibilitas antar platform Perlu konsistensi salt, IV, padding, dan format Kompatibel jika parameter cocok Kompatibel jika IV & padding disesuaikan Kompatibel secara umum
Contoh hasil output Base64 panjang (misal: U2FsdGVkX1...==) Buffer atau Base64 String terenkripsi Base64 terenkripsi string
Catatan Penting Salt & IV harus disimpan & dikirim manual jika lintas sistem Gunakan createCipheriv dan simpan IV IV disisipkan ke ciphertext jika perlu Gunakan mode dan padding yang sama untuk decoding

Comments

Popular posts from this blog

Vault Frontend 2 V5

Atur Jarak Antar Elemen HTML