Enam belas tips keamanan untuk plugin WordPress & pengembang tema
Diterbitkan: 2021-10-19Seseorang tidak pernah bisa terlalu berhati-hati!
Sebagian besar tugas kami sebagai pengembang adalah memastikan situs dan plugin yang kami buat aman.
Bisnis membutuhkan solusi yang lebih cepat dengan fungsionalitas yang semakin kompleks. Meskipun ini merupakan kemajuan yang baik, membangun proyek yang kompleks juga menuntut pengaturan keamanan yang tepat. Keamanan WordPress adalah salah satu aspek terpenting dari pengembangan situs web.
Dengan meningkatnya kompleksitas fitur, banyak pengembang kehilangan prinsip-prinsip keamanan pengembangan situs web dan aplikasi web dasar. Ini menghasilkan situs web cacat yang terbuka untuk serangan cyber dan risiko lainnya.
Oleh karena itu, penting bagi Anda untuk menerapkan beberapa protokol keamanan pengembangan situs web dan aplikasi web dasar saat membangun proyek Anda.
Berikut adalah 16 tips keamanan untuk pengembang web yang akan membantu menjaga situs Anda tetap aman dan sehat.
1. Cari tahu data apa yang perlu dilindungi
Salah satu prinsip keamanan pengembangan situs web yang paling penting adalah Anda hanya perlu menyimpan data yang diperlukan.
Ketika Anda sedang mengembangkan sebuah proyek, Anda perlu menanyakan tiga pertanyaan ini:
- Data apa yang perlu disimpan oleh perusahaan?
- Data sensitif apa yang perlu dienkripsi oleh perusahaan?
- Jika, untuk beberapa alasan, data dikompromikan, seberapa besar hal itu dapat merugikan perusahaan?
Semakin banyak data sensitif yang Anda simpan, semakin besar risiko paparan. Jika Anda harus menyimpan data sensitif, Anda perlu mengenkripsinya sehingga sulit untuk diakses.
2. Menerapkan manajemen peran & kontrol akses
Saat mendesain situs web, plugin, atau tema, penting untuk memberi pengguna hak istimewa serendah mungkin.
Keistimewaan harus dibatasi sehingga pengguna hanya mendapatkan apa yang mereka butuhkan dan tidak dapat mengakses area lain.
Misalnya, kontributor harus dibatasi untuk dapat membuat posting dan halaman baru tetapi tidak menerbitkannya. Editor harus dapat membuat posting baru dan mempublikasikannya tetapi tidak dapat mengubah desain atau plugin.
Demikian pula, saat mengembangkan fungsionalitas tertentu di plugin atau tema yang ingin Anda batasi, pastikan Anda membuat peran pengguna WordPress baru selama instalasi. Buat admin mengetahuinya, sehingga peran yang tepat diberikan kepada masing-masing pengguna yang akan menggunakan plugin atau tema yang Anda kembangkan.
Berikut adalah representasi bergambar cepat tentang bagaimana struktur itu terlihat.
Pendekatan ini meminimalkan masalah karena kami dapat membatasi seberapa banyak kerusakan yang dapat dilakukan penyusup. Anda juga dapat membatasi kerusakan yang disebabkan oleh kesalahan atau kesalahan oleh pengguna yang penasaran bermain-main di area situs web yang sebenarnya tidak seharusnya.
Anda juga perlu membatasi akses dalam tim pengembangan tergantung pada peran mereka.
3. Terapkan otentikasi
Otentikasi situs web adalah proses keamanan yang memungkinkan pengguna memverifikasi identitas mereka untuk mendapatkan akses ke area terbatas situs web.
Saat mengembangkan tema atau plugin, Anda akan memiliki data tertentu yang perlu dibatasi sementara beberapa data terlihat oleh pengguna. Oleh karena itu, penting bagi Anda untuk menambahkan tanda centang pada kode untuk memverifikasi apakah pengguna yang mengakses data terbatas telah diautentikasi dan memiliki peran pengguna yang benar.
Demikian pula, saat membuat situs web, Anda dapat menerapkan praktik pengelolaan akun yang efektif seperti penegakan kata sandi yang kuat dan autentikasi multifaktor untuk melindungi data pengguna.
Otentikasi dua faktor adalah salah satu cara paling populer untuk mengimplementasikan otentikasi.
Otentikasi dua faktor (2FA) adalah proses dua langkah di mana Anda memerlukan kode tambahan atau kata sandi satu kali (OTP) untuk masuk ke situs Anda selain dari kata sandi situs web Anda. OTP ini biasanya dikirim ke perangkat lain melalui pesan teks, panggilan telepon, atau aplikasi 2FA yang dikenali seperti Google Authenticator, Authy, Duo Security, dan banyak lagi. Menerapkan 2FA membuat Anda aman dari serangan brute force.
Jika Anda membangun situs web di WordPress, lihat alat luar biasa ini yang memungkinkan Anda mengamankan situs web Anda.
- Batasi Upaya Login: Alat ini membuat Anda aman dari serangan brute force dengan membatasi jumlah upaya login. Ini juga termasuk anti-spam dan logout pengguna tidak aktif otomatis.
- WP2 FA: Plugin WP2FA memungkinkan Anda menambahkan otentikasi dua faktor ke situs web Anda dalam sekejap. Ini juga mendukung beberapa aplikasi 2FA seperti Google Authenticator, Authy, FreeOTP, Duo Security, dan beberapa lainnya.
- Keamanan Perisai: Plugin ini tidak mendukung aplikasi 2FA seperti Google Authenticator dan SMS 2FA, namun berguna bagi mereka yang menggunakan YubiKey.
- WPassword: Plugin ini membantu Anda menerapkan kata sandi yang kuat untuk situs WordPress Anda, memblokir pengguna dengan terlalu banyak upaya login yang gagal, dan banyak lagi. Ini terintegrasi dengan mulus dengan WooCommerce dan plugin pihak ketiga lainnya.
4. Periksa tema atau plugin Anda sebelum merilisnya
Sebelum tema atau plugin dirilis, Anda perlu memastikan bahwa kode Anda bebas dari kesalahan. Anda dapat menggunakan dependensi komposer tertentu untuk mendeteksi kerentanan apa pun dalam kode Anda.
Beberapa dependensi yang direkomendasikan untuk situs web WordPress adalah:
- Ulasan Tema
- Wp-coding-standar
Standar pengkodean ini memiliki aturan pengkodean yang ketat seperti selalu mengeluarkan data sebelum mencetaknya, menggunakan nonce untuk semua permintaan, membersihkan data permintaan sebelum menggunakannya, memberikan izin pengguna yang tepat, dan banyak lagi untuk membantu mengamankan kode Anda.
Alat-alat ini sangat bagus jika Anda mengembangkan tema atau plugin Anda sendiri.
Anda juga harus memeriksa Pemindai Keamanan WPScan. Ini adalah pemindai keamanan situs web online hebat yang memeriksa situs web Anda untuk mengetahui kerentanan apa pun.
5. Hindari Fungsi PHP Tertentu
Fungsi PHP tertentu seperti eval(), dan unserialize(), dapat mengekspos data sistem dan dapat menyebabkan terbukanya data server yang dapat menyebabkan server dimatikan atau mengakses semua informasi server dari peretas.
Berikut adalah beberapa fungsi PHP yang harus Anda hindari jika memungkinkan:
eval() : eval dapat mengeksekusi kode PHP sewenang-wenang. Ini mungkin mengekspos kode Anda ke serangan injeksi jika tidak digunakan dengan benar.
serialize() atau unserialize(): Jangan gunakan serialize() atau unserialize() dengan input yang disediakan pengguna. Penyerang dapat mengeksploitasi fungsi-fungsi ini. Mereka dapat melewatkan string dengan objek arbitrer serial untuk menjalankan kode arbitrer.
md5() : Internet penuh dengan ulasan tentang kelemahan kriptografi md5() 1 dan dianggap tidak aman. Gunakan fungsi hashing yang lebih baik, seperti SHA-2.
sha1() : sha1() adalah fungsi hashing lain yang tidak boleh digunakan karena sifat cepat dari algoritma hashing. Disarankan untuk menggunakan algoritme hashing SHA-2 sebagai ganti md5() dalam kerangka kerja modern apa pun.
6. Gunakan linter untuk menemukan masalah dalam kode
Alat lint adalah penganalisis kode statis dasar yang memeriksa kode sumber Anda untuk kesalahan program dan gaya. Nada suara keluaran Linter harus ramah untuk menjaga proyek tetap berjalan.
Kode lint adalah cara yang bagus untuk menemukan potensi kerentanan dan mengurangi kesalahan saat mengembangkan situs web atau aplikasi. Anda dapat menggunakan linter keamanan tertentu untuk pengembangan PHP, JS, dan HTML.
Berikut adalah beberapa alat penting untuk analisis statis kode PHP Anda adalah:
- PHP-Paralel-Lint
- Sonar Lint
- Mazmur
- PHP Lint
Anda dapat menggunakan SonarLint untuk linting HTML dan Javascript juga.
Linter JS penting lainnya adalah:
- JS Lint
- ES Lint
7. Hapus kode dan plugin yang tidak digunakan
Dengan perangkat lunak yang semakin kompleks, potensi kerentanan dalam kode juga meningkat. Tema dan plugin WordPress tidak berbeda. Fitur kode yang terus meningkat seperti HTML5, CSS, dan JavaScript memungkinkan pengembang untuk membangun aplikasi web yang kaya.
Namun, meningkatnya kompleksitas aplikasi adalah pedang bermata dua. Sementara mereka membantu memberikan fitur yang diharapkan pengguna, mereka juga memperluas permukaan serangan aplikasi. Salah satu langkah untuk menghadapi kerentanan tersebut adalah dengan menghapus kode yang tidak digunakan.
Pengguna yang berbeda mungkin tidak memerlukan semua fitur dari situs web atau aplikasi web. Dengan menghapus fitur yang tidak perlu berdasarkan kebutuhan pengguna di setiap penerapan, Anda dapat mengurangi permukaan serangan dan risiko terkait.
Jika Anda suka mengembangkan situs web di WordPress, kami sarankan untuk menggunakan tema dan plugin yang memenuhi kebutuhan Anda sambil tetap ringan dalam hal kodenya. Mereka tidak hanya menjaga situs web Anda tetap aman, tetapi juga membantu pengoptimalan mesin telusur. Berikut adalah beberapa tema WordPress ringan dan tercepat terbaik yang tersedia.
8. Gunakan validasi sisi server dan sisi klien
Jika Anda adalah seseorang yang suka menulis kode khusus, penting untuk menggunakan validasi sisi klien dan sisi server. Validasi sisi klien membantu melindungi pengguna dari membuat kesalahan umum seperti salah memasukkan data atau lupa bidang. Validasi tersebut menangkap data yang tidak valid sebelum mencapai server, menghemat waktu dan uang.
Bayangkan, jika validasi sisi klien hanya terjadi setelah perjalanan bolak-balik ke server gagal, Anda akan menghadapi penundaan untuk memberi tahu pengguna apa yang mereka lakukan salah tanpa mengizinkan mereka untuk segera memperbaiki kesalahan mereka.
Namun, validasi sisi klien saja tidak cukup sebagai tindakan keamanan. Anda juga perlu menggunakan validasi sisi server. Validasi sisi server melindungi Anda dari input berbahaya dan vektor serangan lainnya.
9. Bersihkan setiap input pengguna dan data permintaan
Sanitasi Masukan Pengguna adalah tindakan keamanan siber untuk mengaudit, membersihkan, dan memfilter data dari pengguna dan API dari karakter dan string yang tidak sah atau tidak diinginkan untuk mencegah penyuntikan kode berbahaya ke dalam sistem.
Peretas dapat menyuntikkan perintah tertentu dan melakukan tindakan yang dapat membahayakan keamanan situs web Anda. Sanitasi input membantu menjaga integritas data dan meningkatkan keamanan sistem.
10. Terapkan perbaikan permanen
Saat melakukan pemeriksaan keamanan, Anda mungkin melihat beberapa kerentanan yang terus muncul kembali dari waktu ke waktu. Anda perlu menentukan akar penyebab kerentanan baru sehingga Anda dapat menghapusnya secara permanen alih-alih menambahkan tambalan sebagian.
Misalnya, sangat sering Anda mungkin menemukan masalah SQL / XSS dalam tema atau plugin yang Anda kembangkan. Dalam kasus seperti itu, alih-alih membangun pemeriksaan sanitasi untuk setiap input, buat fungsi/kelas dan buat kebijakan bahwa setiap kali ada input pengguna, semua data harus melewati kelas/fungsi ini.
11. Hindari kesalahan konfigurasi dan default keamanan
Kesalahan konfigurasi keamanan terjadi ketika pengaturan keamanan tidak ditentukan dan diterapkan dan nilai default dipertahankan. Gagal menerapkan kontrol keamanan atau mengimplementasikannya dengan kesalahan dapat meningkatkan kemungkinan memiliki kerentanan dalam tema, plugin, atau situs web yang Anda buat.
Kesalahan konfigurasi sering terjadi karena sistem, administrator basis data, atau pengembang tidak mengonfigurasi kerangka kerja aplikasi dengan benar yang mengarah ke jalur terbuka yang berbahaya bagi peretas.
Pastikan bahwa pengaturan default aman dan tidak secara otomatis mengatur kata sandi (jika diperlukan). Misalnya, jika plugin menggunakan direktori tempat pengguna dapat mengunggah file, selalu minta pengguna untuk menyetel kata sandi dan jalur direktori mereka.
12. Tetap beri tahu diri Anda dan perbarui
Keamanan siber adalah bidang yang terus berkembang. Anda perlu mengetahui pembaruan keamanan terbaru dan risiko yang muncul sehingga Anda dapat mengikuti perkembangan dan mengurangi ancaman baru dan yang muncul ke dalam kode Anda.
Sebagai pengembang, ada baiknya Anda selalu mengetahui berita dan menulis kode yang lebih aman, praktik terbaik apa untuk mengamankan pengkodean, membersihkan kode dengan lebih baik, dan menangani masukan pengguna dengan lebih baik.
Untuk melakukan ini, ikuti pakar online dan terus perbarui blog pengembangan web favorit Anda. Anda sudah membaca yang ini. Jadi Anda memulai dengan baik.
Berikut adalah beberapa sumber daya terbaik di Keamanan WordPress.
- blog Keamanan WP Putih
- blog WordFence
- blog sucuri
13. Pertahankan kodenya
Kode yang Anda tulis hari ini mungkin tidak aman besok. Varian kerentanan baru terus muncul dan perlu peningkatan konstan dari ujung pengembang juga.
Saat Anda menambahkan fungsionalitas baru ke plugin atau tema, periksa apakah itu tidak memengaruhi keamanan modul atau kelas lain, atau fungsi dalam kode. Jika ya, Anda perlu memperbarui kode untuk memperbaiki masalah.
Anda juga dapat menggunakan alat seperti GitHub untuk mempertahankan kode tema atau plugin Anda. Ini akan membantu Anda melacak kode dan memperbaiki masalah lebih cepat. Keamanan selalu berkembang. Untuk mengikuti tren terbaru, penting untuk terus memperbarui pengujian keamanan Anda sehingga Anda dapat menemukan kerentanan dan memperbaikinya.
14. Perbarui paket perangkat lunak Anda secara teratur
Ini adalah no-brainer.
Menjaga paket perangkat lunak Anda seperti PHP, Javascript, HTML, dan lainnya diperbarui membantu mengatasi masalah keamanan baru. Meningkatkan keamanan perangkat lunak selalu menjadi perhatian yang berkelanjutan, dan untuk itu, kami selalu memperbarui versi terbaru dari perangkat lunak tersebut.
15. Berkolaborasi dengan tim Anda
Catat tiket keamanan yang diajukan ke tim dukungan Anda. Jika klien Anda melaporkan masalah keamanan apa pun, jadikan prioritas untuk mengatasinya. Pengguna akhir Anda memberikan umpan balik terbaik tentang pekerjaan Anda, jadi gunakanlah dengan baik!
Diskusikan masalah keamanan dengan tim pengembangan dan pastikan bahwa tambalan apa pun yang Anda kembangkan memperbaiki masalah keamanan dan tidak akan merusak apa pun sebelum dipublikasikan. Jika Anda perlu sering berkolaborasi dengan rekan tim atau bekerja dengan klien besar yang melibatkan seluruh departemen dengan dukungan, sebaiknya gunakan perangkat lunak webinar untuk memfasilitasi prosesnya.
16. Persiapkan diri Anda untuk skenario terburuk
Anda tidak bisa terlalu berhati-hati. Web dan apa pun yang dipublikasikan di web tidak akan pernah 100% aman. Namun, Anda dapat mengambil langkah-langkah yang dapat membantu mengurangi risiko.
Kuncinya adalah menilai potensi kerentanan dan mengembangkan respons risiko yang sesuai dengan langkah-langkah keamanan yang memadai. Teknik serangan baru sering muncul sehingga praktik terbaik juga harus berkembang sebagai bagian dari proses ini.
Misalnya, jika situs WordPress diretas, rencana darurat harus mencakup apa yang harus dilakukan jika terjadi peretasan. Itu harus berisi metode pencadangan, proses pembersihan, dan langkah-langkah yang diperlukan untuk membangun kembali situs web dan memulihkan layanan.
Rencana seperti itu akan memungkinkan semua pemangku kepentingan untuk memperbaiki keadaan dengan cepat tanpa kewalahan oleh informasi yang berlebihan atau bereaksi berlebihan dengan tindakan yang tidak perlu.
Pikiran terakhir
Apa lagi yang dapat Anda lakukan untuk meningkatkan keamanan tema atau plugin Anda? Yah, banyak hal. Anda tahu, menulis kode aman bukanlah hal satu kali. Teknologi berkembang dan metode serangan berkembang bersamanya.
Kenyataannya adalah Anda tidak dapat mencegah semua serangan dunia maya atau mengurangi setiap risiko yang mungkin terjadi. Tujuan Anda adalah melakukan sebanyak mungkin dengan apa yang Anda miliki dan terus-menerus meninjau kembali kode Anda untuk memperbaikinya.
Bangun rencana keamanan yang terdefinisi dengan baik untuk situs web Anda dan bersiaplah untuk menghadapi yang terburuk. Pastikan untuk mengambil tiket atau laporan terkait keamanan sebagai prioritas tertinggi.
Publikasikan posting blog atau pengumuman dalam komunitas Anda bahwa Anda telah merilis perbaikan keamanan sehingga semua pengguna Anda dapat memperbarui dan menghindari situs web mereka disusupi.
Keamanan siber tidak jauh berbeda dengan strategi militer. Kuncinya adalah kesiapan! Mudah-mudahan, posting ini telah membantu Anda dengan kesiapan Anda. Beri tahu kami di komentar, tindakan apa yang Anda ambil untuk meningkatkan keamanan situs web Anda.
Referensi yang digunakan dalam artikel ini
1 | https://www.codeproject.com/Articles/11643/Exploiting-MD5-collisions-in-C |
---|