Penggunaan Laravel dalam mencegah serangan XSS (cross-site scripting)

Hallo, Kreatif Readers! Saat ini, banyak situs yang memanfaatkan konten client-server (sebagian besar ditulis dalam JavaScript) untuk menambah user experience. Sebaliknya, tren ini juga telah memperluas keberadaan dan frekuensi serangan cross-site scripting (XSS).

XSS sendiri merupakan serangan injeksi kode pada sisi klien dengan menggunakan sarana halaman website atau web aplikasi. Peretas akan mengeksekusi script berbahaya di browser dengan cara memasukkan kode berbahaya ke halaman web atau web aplikasi yang sah. Serangan ini dapat dilakukan menggunakan JavaScript, VBScript, ActiveX, Flash, dan bahasa sisi klien lainnya.

Kerentanan ini memungkinkan pencurian terhadap identitas pengguna, melewati batasan sistem, serangan malware, dll. Reflected XSS dieksekusi melalui browser dan terjadi jika website menyediakan tempat bagi pengguna untuk melakukan inputan.

Pada dasarnya terdapat tiga jenis serangan XSS yaitu:

  1. Stored XSS(Persistent XSS) merupakan jenis XSS yang paling merusak. Dalam stored XSS, script jahat yang disuntikkan akan disimpan secara permanen di server target, seperti database, forum pesan, visitor log, dan lain-lain.
  2. Reflected XSS(Non-persistent XSS) terjadi ketika skrip berbahaya dipantulkan dari web aplikasi ke browser korban.
  3. DOM-based XSS, serangan ini terjadi jika webaplikasi menulis data ke Document Object Model(DOM) tanpa sanitization yang tepat. Penyerang dapat memanipulasi data ini untuk memasukkan kontenXSS pada halaman webseperti kode Javascript yang berbahaya.

Berikut adalah data flow XSS Attack:

xss

Berdasarkan gambar diatas dapat diketahui serangan XSS dilakukan dengan memasukan script ke dalam inputan yang akan diolah oleh website untuk disimpan ke dalam database yang akan ditampilkan pada website yang diakses oleh user.

Laravel sendiri telah dilengkapi fitur-fitur yang dapat mencegah terjadinya serangan XSS, diantaranya adalah:

Escape Output dengan Blade Templating

Blade secara otomatis akan melakukan escape karakter khusus HTML pada data yang ditampilkan dengan menggunakan sintaks Blade {{ }} atau {!! !!} saat menampilkan data dari sumber eksternal pada tampilan Blade. Contoh sintaksnya adalah:

<p>{{ $user->name }}</p>

Form Request Validation

Gunakan fitur validasi Laravel untuk memastikan bahwa input yang diterima dari pengguna telah divalidasi dengan benar sebelum digunakan dalam aplikasi. Contoh sintaksnya adalah:

public function store(Request $request)
{
 $validatedData = $request->validate([
 'name' => 'required|string|max:255',
 'email' => 'required|email',
 ]);

 save()
}

HTML Purifier

Fitur ini berfungsi sebagai filtering input HTML yang masuk dari pengguna. Contoh sintaksnya adalah:

use HTMLPurifier;

$purifier = new HTMLPurifier();
$cleanHtml = $purifier->purify($html);

Content Security Policy (CSP)

Terapkan kebijakan keamanan konten (CSP) di aplikasi untuk membatasi jenis konten yang diizinkan untuk dimuat pada halaman web Anda. Contoh sintaksnya adalah:

header("Content-Security-Policy: default-src 'self'");

Dengan menerapkan langkah-langkah di atas, developer dapat meningkatkan perlindungan terhadap serangan XSS di aplikasi Laravel. Selain itu, selalu penting untuk secara teratur memperbarui framework Laravel dan dependensinya untuk mendapatkan perlindungan keamanan terbaru.

Reference:

View of Analisis Implementasi Laravel 9 Pada Website E-Book Dalam Mengatasi N+1 Problem Serta Penyerangan Csrf dan Xss (unity-academy.sch.id)

View of ANALISIS CROSS-SITE SCRIPTING (XSS) INJECTION – REFLECTED XSS AND STORED XSS MENGGGUNAKAN FRAMEWORK OWASP 10 (pnk.ac.id)

Penerapan SEO (Search Engine Optimization) pada Website Menggunakan Laravel

Hallo kreatif readers..
Dalam era digital saat ini, penting bagi pemilik situs web untuk memastikan bahwa situs mereka mudah ditemukan oleh mesin pencari seperti Google. Salah satu cara terbaik untuk mencapai ini adalah dengan menerapkan praktik SEO (Search Engine Optimization) yang efektif. Dalam blog ini akan dibahas bagaimana meningkatkan SEO situs web dengan menggunakan framework Laravel, yang merupakan salah satu framework PHP yang paling populer.

Apa sih SEO (Search Engine Optimization)? 
SEO (Search Engine Optimization) adalah salah satu teknik untuk optimalisasi mesin pencarian seperti Google menemukan website yang sudah dibuat berada pada peringkat teratas atau halaman pertama. Tujuan utamanya adalah membuat situs web lebih mudah ditemukan oleh pengguna yang mencari informasi dengan relevan.
1

  1. SEO dikategorikan menjadi tiga komponen utama:
    SEO pada halaman, yang dilakukan dalam halaman dan konten situs web (misal: optimalisasi judul halaman, gambar, deskripsi meta, tag header, kualitas konten, dan penempatan kata kunci)
  2. SEO di luar halaman, yang dilakukan di luar situs web untuk meningkatkan otoritas, reputasi, dan peringkatnya (misal: pembuatan tautan, media sosial, penyebutan merk, dan kutipan lokal)
  3. SEO teknis, yang dilakukan untuk memastikan mesin pencari seperti Google dapat menelusuri, mengindeks, dan preview situs web secara efisien (misal: struktur situs web, URL, kecepatan situs, dan keramahan seluler)

Laravel, sebagai framework PHP yang populer, menyediakan banyak fitur yang mendukung praktik SEO. Beberapa cara untuk meningkatkan SEO dalam proyek Laravel yaitu:

  1. Optimasi URL
    Salah satu langkah pertama yang dapat dilakukan adalah dengan memastikan URL situs web mudah dibaca dan mengandung kata kunci yang relevan. Dalam Laravel dapat menggunakan routing yang bersih dan deskriptif untuk mencapainya. Pastikan untuk menggunakan kata kunci dalam URL, tetapi hindari over-optimasi.
    Contoh: Daripada menggunakan domain.com/page?id=123, lebaih baik gunakan domain.com/product-name
  2. Penggunaan Metadata
    Metadata seperti meta deskripsi, judul, dan tag lainnya sangat penting untuk SEO. Pada framework Laravel ini, dapat ditambahkan metadata ke halaman-halaman dengan menggunakan template blade. Pastikan untuk membuat deskripsi meta yang menarik dan relevan untuk setiap halaman.
    Contoh: <title>Akhdani Reka Solusi</title>
  3. Pemilihan Kata Kunci
    Identifikasi kata kunci yang relevan dan pastikan untuk menggunakannya dalam konten situs web yang dibuat, termasuk judul halaman, gambar, dan deskripsi meta. Gunakan alat-alat seperti Google Keyword Planner untuk menemukan kata kunci yang paling relevan.
    Contoh: gunakan kata kunci “software house company” dalam deskripsi website.
  4. Pengoptimalan Kecepatan
    Kecepatan situs web adalah faktor penting dalam peringkat SEO. Pastikan situs Laravel memuat dengan cepat untuk mengoptimalkan gambar, mengurangi pemanggilan server, dan menggunakan teknik caching.
    Contoh: gunakan Laravel Mix untuk mengkompilasi asset dan cache hasil permintaan.
    Contoh: Mendapatkan backlink dari situs fashion terkemuka dengan anchor textsoftware house“.
  5. Optimalkan Penggunaan Teknologi
    Pastikan penggunaan teknologi di dalam Laravel tidak menghambat pengindeksan oleh mesin pencari.
    Contoh: gunakan JavaScript dengan bijak dan pastikan konten dapat diakses oleh crawler.
  6. Pemeliharaan dan Pembaruan Konten
    Perbarui konten secara teratur untuk tetap relevan dan tambahkan konten baru untuk meningkatkan otoritas situs.
    Contoh: Tulis ulasan website, tambahkan artikel blog tentang tren mode terbaru

Kesimpulan
Dengan menerapkan SEO pada website, dapat meningkatkan visibilitas situs web Laravel dalam hasil pencarian Google. Namun SEO adalah proses yang berkelanjutan, jadi pastikan untuk terus memantau dan memperbarui strategi sesuai kebutuhan. Dengan melakukan ini, website akan mencapai peringkat yang lebih tinggi dalam hasil pencarian dan lebih banyak yang menelusuri situs website anda.

Referensi:
[1] Halilintar, R. B., & Ariyus, D. (2018). Implementasi SEO ( Search Engine Optimization ) Pada Website Agc ( Auto Generated Content ) Untuk Meningkatkan Serp ( Search Engine Result Page ) Studi Kasus : Website Gallery (pp. 13–18).
[2] Riyanto, A. (2018). Analisis Dan Penerapan Search Engine Optimization Pada Website Menggunakan Metode White Hat Seo. Jurnal Teknologi Informasi,1.

Mengenal Single Sign-On (SSO) dengan Keycloak

Halo kreative readers, tahu kah kamu bahwa dalam era digital yang semakin berkembang, keamanan informasi menjadi hal yang sangat penting bagi pengguna dan penyedia layanan. Di tengah perjalanan ini, konsep Single Sign-On (SSO) telah menjadi solusi yang semakin populer untuk mengelola otentikasi pengguna dengan efisien dan aman. Salah satu alat yang menonjol dalam mendukung SSO adalah Keycloak, sebuah platform open-source yang dirancang untuk mengelola identitas dan manajemen akses secara terpusat. Pada kesempatan kali ini mari kita lihat lebih dalam tentang bagaimana Keycloak dan SSO bekerja bersama-sama untuk memberikan solusi identifikasi yang aman dan nyaman.

Pengertian Keycloak

Keycloak adalah platform open-source yang dikembangkan oleh Red Hat untuk manajemen identitas dan akses. Dirancang untuk memenuhi kebutuhan aplikasi modern, Keycloak menyediakan berbagai fitur termasuk otentikasi multi-faktor, manajemen akses berbasis peran, dan tentu saja, dukungan SSO. Dengan Keycloak, organisasi dapat mengelola otentikasi pengguna, otorisasi, dan administrasi identitas dengan mudah dan efisien.

Konsep Single Sign-On (SSO)

SSO adalah sebuah mekanisme otentikasi yang memungkinkan pengguna untuk login hanya sekali dan mendapatkan akses ke berbagai aplikasi atau layanan tanpa perlu memasukkan kredensial mereka lagi saat mengakses sumber daya lain yang terhubung. Dengan SSO, pengguna dapat menghindari kebingungan dan kerumitan yang terkait dengan pengelolaan banyak kredensial login.

Cara Keycloak Mendukung SSO

SSO

Keycloak menyediakan infrastruktur otentikasi yang kuat yang memungkinkan integrasi mudah dengan aplikasi atau layanan yang ada. Dengan mengimplementasikan protokol OpenID Connect (OIDC) di atas protokol OAuth 2.0, Keycloak menghasilkan token otentikasi yang digunakan untuk mengidentifikasi pengguna secara aman saat mengakses aplikasi yang terhubung. Pengguna hanya perlu login sekali ke Keycloak, dan token yang diberikan akan digunakan untuk mengotentikasi mereka secara otomatis saat mengakses aplikasi atau layanan lain yang terhubung.

Keuntungan Menggunakan Keycloak dan SSO

1. Kenyamanan Pengguna

SSO memungkinkan pengguna untuk mengakses berbagai aplikasi dengan satu login, meningkatkan kenyamanan dan efisiensi.

2. Keamanan yang Ditingkatkan

Dengan mekanisme otentikasi yang terpusat dan token yang dienkripsi, Keycloak dan SSO membantu meningkatkan keamanan identifikasi pengguna.

3. Manajemen Identitas yang Efisien

Keycloak menyediakan antarmuka administrasi yang kuat untuk mengelola pengguna, peran, dan kebijakan akses secara terpusat, menyederhanakan manajemen identitas di seluruh organisasi.

Kesimpulan

Dalam dunia yang semakin terhubung secara digital, keamanan dan kenyamanan dalam identifikasi sangatlah penting. Dengan menggunakan Keycloak dan SSO, organisasi dapat mengimplementasikan solusi otentikasi yang kuat dan efisien untuk pengguna mereka. Dengan demikian, Keycloak menjadi salah satu pilihan terbaik untuk memenuhi kebutuhan identifikasi yang kompleks dalam lingkungan modern yang terus berkembang.

Referensi : 
1) K. Sergey, "The Comparative Analysis of Technologies and Software for Single Sign-On," 2023 19th International Asian School-Seminar on Optimization Problems of Complex Systems (OPCS), Novosibirsk, Moscow, Russian Federation, 2023, pp. 44-47. 
2) Keahey K, Anderson J, Sherman M, Hammock C, Zhen Z, Tillotson J, Bargo T, Long L, Ul Islam T, Babu S, Zhang H and Halbach F. CHI-in-a-Box: Reducing Operational Costs of Research Testbeds. Practice and Experience in Advanced Research Computing. (1-8). 
3) Muhammad Edwin, “How to implement single sign-out in Keycloak with Spring Boot”, 2023 7th, Red Hat Developer.

 

 

Implementasi Role Based Access Control

Hallo, Kreatif Readers! Artikel ini akan membahas mengenai Role Based Access Control, mulai dari pengertian, konsep dan komponen.

Role Based Access Control adalah control akses yang merupakan perpaduan mandatory access control (MAC) dan Discretionary Access Control (DAC). RBAC mengacu pada role based security yang bersifat netral dan merupakan teknologi kontrol akses yang fleksibel untuk simulasi DAC dan MAC. RBAC sebenarnya adalah bentuk MAC, tetapi tidak didasarkan pada persyaratan keamanan yang bertingkat.

Kebijakan akses yang dilakukan oleh MAC berdasarkan pada ketentuan yang ditentukan oleh otoritas pusat bukan dilakukan oleh pemilik individu objek tersebut dan pemilik tidak dapat mengubah hak akses yang telah dibuat. MAC memperlakukan kontrol akses berdasarkan keamanan informasi yang melekat pada pengguna dan objek.

RBAC memberikan hak akses untuk roles bukan menerapkan hak akses pelaku atau subjek pengguna tidak bisa mengambil hak akses pengguna lain merupakan dasar perbedaan antara RBAC dan DAC. Roles dibuat untuk fungsi kerja yang berbeda sesuai dengan peran keanggotaan yang didasarkan pada kompetensi tugas dan kewenangan. Tugas keamanan RRBAC diberikan pada kontrol akses prioritas tertinggi untuk mengontrol akses ke aplikasi. Administrator sangat berperan dalam memberikan hak kepada pengguna, sehingga subjek hak kepada pengguna akan mendapatkan akses ke objek melalui role yang telah diberikan oleh administrator.

flow-halaman-6-drawio-1

 

Konsep Role Based Access Control

Role bases acces control adalah pendekatan pengendalian akses yang mengutamakan penggunaan peran atau role sebagai dasar untuk pemberian izin, yang menyederhanakan proses administrasi secara signifikan. Dalam RBAC terdapat tiga prinsip utama yang umum digunakan, yaitu:

1. User role assigment

Prinsip ini menentukan izin atau hak akses pengguna berdasarkan peran atau tugas yang mereka miliki dalam organisasi atau sistem. Ketika seorang pengguna mengalami perubahan posisi atau jika mereka tidak lagi terkait dengan organisasi, administrator dapat dengan mudah mengubah peran mereka dan izin secara otomatis diperbarui. RBAC memungkinkan pengguna untuk ditugaskan dalam beberapa peran sekaligus yang memberikan fleksibilitas dalam manajemen akses.

2. User role authorization

Prinsip ini memastikan bahwa seorang pengguna disetujui untuk mendapatkan suatu peran dan melakukan fungsi terkait. Artinya, tidak semua pengguna memiliki akses ke semua peran.

3. User role permission and access rights

Prinsip ini mendefinisikan dengan jelas apa yang dapat dan tidak dapat dilakukan oleh seorang pengguna berdasarkan peran mereka. Izin ini mencakup aspek – aspek seperti:

  • Akses, prinsip ini menentukan pengguna mana yang dapat membuka item tertentu seperti file atau database. Selain itu, perlu dipertimbangkan juga siapa yang harus mengetahui keberadaan aset tertentu dan batasan – batasan yang diterapkan terkait visibilitas.
  • Modifikasi, prinsip ini mengatur pengguna yang dapat melakukan perubahan item – item tertentu. Selain itu, dijelaskan pula persetujuan apa yang diperlukan untuk melakukan perubahan.
  • Berbagi, prinsip ini mengidentifikasi pengguna yang dapat mengunduh dokumen dan pengguna yang dapat berbagi dokumen dengan pengguna lainnya.

Dalam RBAC, penting diingat bahwa izin mengikuti peran, bukan sebaliknya. Artinya, terlebih dahulu tentukan apa yang setiap peran harus lakukan dan kemudian terapkan izin sesuai dengan peran tersebut.

Komponen – komponen role based access control

Role based access control adalah suatu sistem pengendalian akses yang komplek dan untuk memahami bagaimana RBAC berfungsi, penting untuk memahami komponen – komponennya yang penting. Berikut adalah lima komponen utama dari RBAC:

1. Routing

Routing dalam RBAC menentukan bagaiaman permintaan akses dari pengguna dialihkan ke sistem yang tepat. Ini adalah langkah awal yang penting dalam proses pengendalian akses. Routing yang efisien memastikan bahwa permintaan akses sampai ke tempat yang benar dengan cepat dan aman.

2. Permission

Permission mengacu pada hak akses yang diberikan kepada setiap peran dalam sistem. Izin ini secara spesifik menentukan tindakan apa yang dapat dilakukan oleh pemegang peran.

3. Role

Role adalah entitas atau fungsi yang diberikan kepada pengguna atau entitas dalam RBAC. Setiap peran memiliki seperangkat izin atau hak akses yang ditentukan.

4. Access Assignment

Access assignment adalah proses pemberian peran kepada pengguna atau entitas dalam sistem. Penugasan akses ini harus dilakukan dengan cermat sesuai dengan tugas dan tanggung jawab individu atau entitas tersebut.

5. Rules

Rules dalam RBAC adalah panduan yang mengatur bagaimana izin – izin diberikan dan dikelola. Aturan – aturan ini dapat bervariasi tergantung pada kebijakan keamanan sistem.

 

Referensi: Rubiyanto, Selo, Widyaman, 2017. Seminar Nasional Sains dan Teknologi