Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Yii
Code

Membangun Startup Anda: Dasar-dasar Keamanan

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Issue Tracking and Feature Planning
Building Your Startup: Ajax for Meeting Times and Places

Indonesian (Bahasa Indonesia) translation by ⚡ Rova Rindrata (you can also view the original English article)

Final product image
What You'll Be Creating

Tutorial ini adalah bagian dari serial Membangun Startup Anda dengan PHP di Envato Tuts+. Dalam seri ini, saya membimbing Anda melalui peluncuran startup dari konsep ke kenyataan menggunakan aplikasi Meeting Planner saya sebagai contoh di kehidupan nyata. Setiap langkah di sepanjang jalan, saya akan merilis kode Meeting Planner sebagai contoh sumber terbuka yang bisa Anda pelajari. Saya juga akan membahas masalah bisnis terkait startup saat mereka muncul.

Server produksi untuk Meeting Planner saat ini berjalan di Digital Ocean (lihat tutorial lainnya tentang mereka di Envato Tuts+.) Pada episode hari ini, kita akan menyelam ke dalam dasar-dasar keamanan server web. Saya akan membahas pengamanan VPS Linux yang menjalankan Meeting Planner dan beberapa keamanan dasar Yii. Pada episode berikutnya, saya akan menyelam lebih jauh ke dalam keamanan aplikasi Yii yang terprogram.

Saya berpartisipasi dalam thread komentar di bawah, jadi silakan bagikan tanggapan Anda. Tolong beritahu saya jika ada topik keamanan yang menurut Anda telah saya lewatkan. Saya juga terbuka terhadap gagasan dan saran fitur baru untuk tutorial masa depan.

Sebagai pengingat, semua kode untuk Meeting Planner ditulis dalam Framework Yii2 untuk PHP. Jika Anda ingin mempelajari lebih lanjut tentang Yii2, lihat seri paralel kami Pemrograman dengan Yii2.

Jika Anda belum mencoba Meeting Planner, cobalah menjadwalkan pertemuan pertama Anda sekarang juga. Jangan ragu untuk mengirim umpan balik tentang pengalaman Anda di komentar di bawah ini.

Keamanan Hosting dan VPS

Sumber Daya Umum

Jika Anda menjalankan VPS Linux generik, Anda mungkin ingin meninjau ulang tutorial Envato Tuts+ saya sebelumnya, Mengamankan Login Server Anda. Ini membahas sejumlah langkah yang akan kita kunjungi hari ini, termasuk keamanan SSH dan firewall.

Digital Ocean juga merupakan sumber daya yang bagus untuk praktik keamanan. Pengantar Mengamankan VPS Linux Anda adalah salah satu ikhtisar terbaik yang mereka tawarkan. Plus, mereka memiliki grafis yang keren.

Startup Series - 7 Security Measures via Digital Ocean - graphic of Hun-like invaders
melalui 7 Tindakan Pengamanan untuk Melindungi Server Anda oleh Digital Ocean

Berikut adalah tiga artikel lain yang mereka tawarkan yang saya gunakan untuk latar belakang dalam tutorial ini:

Menjaga Server Tetap Diperbarui

Pertama, sangat penting bahwa Anda tetap memperbarui server Anda dengan pembaruan dan peningkatan reguler. Ini mengintegrasikan patch keamanan dari penyedia perangkat lunak (dan sumber terbuka) yang Anda gunakan.

Inilah langkah-langkah dasarnya—Anda mungkin akan akrab dengan mereka:

Dist-upgrade menggunakan beberapa kecerdasan untuk mengelola ketergantungan dari paket yang diperbarui:

Untuk memastikan bahwa sepenuhnya berpengaruh, Anda mungkin perlu melakukan reboot pada kesempatan tertentu. Saya selalu menghentikan database saya dan kemudian restart:

Ketika Meeting Planner memiliki lebih banyak pengguna, mekanisme restart yang lebih rinci mungkin diperlukan.

Mengkonfigurasi Login SSH

Startup Series - SSH Key Authentication
Gambar melalui 7 Tindakan Pengamanan untuk Melindungi Server Anda oleh Digital Ocean

Anda memiliki pilihan untuk menggunakan private key Anda saat membuat droplet Digital Ocean. Saat mengatur Meeting Planner, saya mengulangi langkah-langkah yang saya uraikan di sini: Mengamankan Login Server Anda.

Saya juga memindahkan login SSH ke port kustom, bukan port yang umumnya digunakan (dan diserang) 22.

Pengaturan Firewall

Startup Series - Firewall Request Filtering
Gambar melalui 7 Tindakan Pengamanan untuk Melindungi Server Anda oleh Digital Ocean

Selanjutnya, saya menginstal UFW, firewall yang tidak rumit:

Bagaimanapun juga, saya tidak mengatakan ya untuk permintaan itu. Peringatannya mengingatkan saya untuk memeriksa ulang semua persyaratan SSH saya.

Sebagai contoh, saya mematikan port SSH default dan menyalakan yang saya gunakan:

Kemudian, saya menetapkan permintaan sudo agar di masa depan untuk menonaktifkan UFW jika pengaturan saya tidak benar:

Kemudian, saya mengaktifkan UFW dan menjalankannya melalui pengaturan yang tersisa:

Berikut adalah hasilnya:

Catatan: Karena database saya saat ini berjalan di server yang sama dengan layanan web Meeting Planner, saya dapat memblokir port 3306. Namun, karena penggunaan situs untuk skala ke beberapa server, perubahan akan dibutuhkan.

Saya juga mengedit konfigurasi UFW untuk mengaktifkan firewall saat server me-restart:

Karena perintah disable tertunda, saya harus mengaktifkan UFW lagi setelah lima menit.

Selain Mengamankan Login Server Anda milik saya, panduan Digital Ocean UFW Essentials: Aturan dan Perintah Firewall Umum dan Cara Setup Firewall dengan UFW di Server Cloud Ubuntu dan Debian sangat membantu ketika mengkonfigurasi UFW.

Menyiapkan SSL

Startup Series - Lets Encrypt New Certificate Authority Free Automated and Open

Demi keamanan orang yang menggunakan Meeting Planner, saya juga mengatur SSL seperti yang dijelaskan dalam Menggunakan Let's Encrypt SSL dengan Proyek WordPress Anda.

Dan, Anda mungkin memperhatikan, saya mengizinkan akses https di port 443 saat memasang firewall di atas. Permintaan untuk http://meetingplanner.io secara otomatis dialihkan ke https://meetingplanner.io.

Memulai dengan Keamanan Aplikasi Yii2

Di luar pondasi keamanan Linux, kita juga perlu memikirkan tentang mengamankan Kerangka Yii di atas PHP. Anda mungkin ingin membaca Pemrograman dengan Yii2: Keamanan, yang sebagian besar akan kita bahas di episode berikutnya.

Namun, hari ini, kita akan menerapkan beberapa fitur kontrol akses dasar untuk Meeting Planner.

Access Control

Salah satu manfaat awal menggunakan kerangka MVC PHP adalah bahwa semua permintaan halaman dialihkan melalui satu file index.php. Seperti yang saya jelaskan dalam Pemrograman dengan Yii2: Pembuatan Routing dan URL, Yii dengan hati-hati mengelola permintaan halaman yang masuk dan mengarahkannya ke pengendali dan metode tindakan yang sesuai.

Selain itu, tugas kami adalah untuk mengamankan permintaan pengontrolan saat mereka masuk ke aplikasi. Terutama, siapa orang ini dan apakah mereka berhak mengakses halaman ini?

Seperti yang dibahas dalam tutorial Keamanan Yii2, Yii memiliki beragam pilihan untuk mengelola akses. Meeting Planner secara khusus menggunakan kemampuan Access Control.

Mengamankan Permintaan Aplikasi Front-End

Berikut adalah contoh lalu lintas yang masuk ke Meeting Controller yang biasanya diakses oleh pengguna:

Perilaku akses melindungi semua metode yang disebutkan di 'only'. actions yang tercantum dengan roles '@' memerlukan pengguna yang diautentikasi—dengan kata lain, hanya pengguna yang login yang dapat melihat halaman ini. Pengguna yang tidak login dialihkan ke beranda default. Bagaimanapun, halaman dengan roles '?' terbuka untuk umum.

Jadi, misalnya, hanya pengguna terotentikasi yang bisa create sebuah pertemuan, tapi siapa pun bisa masuk ke aplikasi melalui URL pertemuan/perintah. Itu karena kita menggunakan URL perintah secara luas di email, dan ini memiliki lapisan otentikasi lain, yang dijelaskan dalam tutorial Mengirimkan Undangan.

URL perintah mengizinkan pengguna yang tidak login (dan bahkan peserta pertemuan yang belum pernah ke situs ini sebelumnya) untuk mengakses halaman-halaman tertentu secara aman.

Mengamankan Permintaan Aplikasi Back-End

Untuk sistem back-end dari Meeting Planner, hanya administrator yang dapat mengakses halaman-halaman ini. Karena administrator dilambangkan di tabel User kita dengan cara khusus berdasarkan aplikasi, saya harus membuat aturan akses khusus untuk memverifikasinya. Peran dasar Yii hanya mendukung @ yang terotentikasi dan ? yang tidak terotentikasi.

Mari kita lihat MessageController back-end untuk mengirim pembaruan email di seluruh situs kepada pengguna kita:

Aturan khusus memastikan bahwa pengguna bukanlah tamu dan melewati isAdmin() sebelum meneruskannya ke tindakan yang benar. Pengguna lain diarahkan ke halaman login back-end.

Kita telah menyelesaikan banyak hal hari ini, walaupun begitu masih banyak yang harus dilakukan.

Melihat ke Depan

Jika Anda menjalankan server, mungkin Anda menyukai ulasan hari ini tentang dasar Linux dan keamanan hosting. Pada episode berikutnya, kita akan mengeksplorasi langkah-langkah keamanan yang terkait erat dengan Framework Yii dan aplikasi Meeting Planner.

Tonton tutorial yang akan datang di serial Membangun Startup Anda dengan PHP. Ada beberapa fitur besar yang akan muncul.

Link Terkait

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.