Saran pro untuk mengoptimalkan keamanan situs web Anda dan hindari bencana hacking.
Anda mungkin tidak menganggap situs Anda memiliki sesuatu yang layak diretas, namun situs web selalu dikompromikan. Sebagian
besar pelanggaran keamanan situs web bukan untuk mencuri data Anda atau
merusak situs web Anda, namun mencoba menggunakan server Anda sebagai
relay email untuk spam, atau untuk menyiapkan server web sementara,
biasanya untuk menyajikan file yang bersifat ilegal. Cara
lain yang sangat umum untuk penyalahgunaan mesin yang disusupi termasuk
menggunakan server Anda sebagai bagian dari botnet, atau menambang
untuk Bitcoin. Anda bahkan bisa terkena ransomware.
Hacking secara teratur dilakukan oleh skrip otomatis yang ditulis untuk menjelajahi Internet dalam upaya untuk mengeksploitasi masalah keamanan situs web yang dikenal di perangkat lunak. Berikut adalah 10 kiat teratas kami untuk membantu Anda dan situs Anda tetap aman saat online.
Hacking secara teratur dilakukan oleh skrip otomatis yang ditulis untuk menjelajahi Internet dalam upaya untuk mengeksploitasi masalah keamanan situs web yang dikenal di perangkat lunak. Berikut adalah 10 kiat teratas kami untuk membantu Anda dan situs Anda tetap aman saat online.
01. Jaga perangkat lunak tetap up to date
Ini mungkin
tampak jelas, namun memastikan agar perangkat lunak tetap diperbarui
tetap penting dalam menjaga keamanan situs Anda. Ini berlaku untuk sistem operasi server dan perangkat lunak yang mungkin Anda jalankan di situs Anda seperti CMS atau forum. Ketika lubang keamanan situs web ditemukan di perangkat lunak, peretas cepat mencoba menyalahgunakannya.
Jika Anda
menggunakan solusi hosting terkelola maka Anda tidak perlu terlalu
khawatir tentang penerapan pembaruan keamanan untuk sistem operasi
karena perusahaan hosting harus mengurus hal ini.
Jika Anda menggunakan perangkat lunak pihak ketiga di situs web Anda seperti CMS atau forum, Anda harus memastikan Anda cepat menerapkan patch keamanan apa pun. Sebagian besar vendor memiliki milis atau umpan RSS yang merinci masalah keamanan situs web apa pun. WordPress, Umbraco dan banyak CMSes lainnya memberi tahu Anda tentang pembaruan sistem yang tersedia saat Anda log in.
Banyak pengembang menggunakan alat seperti Composer, npm, atau RubyGems untuk mengelola ketergantungan perangkat lunak mereka, dan kerentanan keamanan muncul dalam paket yang Anda andalkan namun tidak diperhatikan adalah salah satu cara termudah untuk tidak tertangkap. Pastikan Anda selalu menyimpan dependensi Anda, dan gunakan alat seperti Gemnasium untuk mendapatkan pemberitahuan otomatis saat kerentanan diumumkan di salah satu komponen Anda.
Jika Anda menggunakan perangkat lunak pihak ketiga di situs web Anda seperti CMS atau forum, Anda harus memastikan Anda cepat menerapkan patch keamanan apa pun. Sebagian besar vendor memiliki milis atau umpan RSS yang merinci masalah keamanan situs web apa pun. WordPress, Umbraco dan banyak CMSes lainnya memberi tahu Anda tentang pembaruan sistem yang tersedia saat Anda log in.
Banyak pengembang menggunakan alat seperti Composer, npm, atau RubyGems untuk mengelola ketergantungan perangkat lunak mereka, dan kerentanan keamanan muncul dalam paket yang Anda andalkan namun tidak diperhatikan adalah salah satu cara termudah untuk tidak tertangkap. Pastikan Anda selalu menyimpan dependensi Anda, dan gunakan alat seperti Gemnasium untuk mendapatkan pemberitahuan otomatis saat kerentanan diumumkan di salah satu komponen Anda.
02. SQL injection
SQL Injection adalah menyerang menggunakan kolom formulir web atau
parameter URL untuk mendapatkan akses atau memanipulasi database Anda. Bila
Anda menggunakan standar Transact SQL, mudah untuk tidak sadar
memasukkan kode nakal ke dalam kueri Anda yang dapat digunakan untuk
mengubah tabel, mendapatkan informasi dan menghapus data. Anda
dapat dengan mudah mencegah hal ini dengan selalu menggunakan query
parameterised, kebanyakan bahasa web memiliki fitur ini dan mudah
diterapkan.
Pertimbangkan Query ini:
SELECT * FROM table WHERE column = '" + parameter + "';
Jika penyerang mengubah parameter URL yang akan dilewati 'atau' 1 '=' 1, ini akan menyebabkan Query akan terlihat seperti ini:
SELECT * FROM table WHERE column = '' OR '1'='1';
Karena '1'
sama dengan '1', ini akan memungkinkan penyerang menambahkan kueri
tambahan ke akhir pernyataan SQL yang juga akan dieksekusi.
Anda bisa memperbaiki query ini secara eksplisit parameterising-nya. Sebagai contoh, jika Anda menggunakan MySQLi di PHP ini seharusnya menjadi:
Anda bisa memperbaiki query ini secara eksplisit parameterising-nya. Sebagai contoh, jika Anda menggunakan MySQLi di PHP ini seharusnya menjadi:
$stmt = $pdo->prepare('SELECT * FROM table WHERE column = :value');
$stmt->execute(array('value' => $parameter));
03. XSS
Cross-site scripting (XSS) menyuntikkan JavaScript jahat ke halaman
Anda, yang kemudian berjalan di browser pengguna Anda, dan dapat
mengubah konten halaman, atau mencuri informasi untuk dikirim kembali ke
penyerang. Misalnya,
jika Anda menunjukkan komentar pada halaman tanpa validasi, penyerang
dapat mengirimkan komentar yang berisi tag skrip dan JavaScript, yang
dapat dijalankan di setiap browser pengguna lain dan mencuri cookie
login mereka, yang memungkinkan serangan tersebut mengendalikan akun
setiap pengguna yang melihat komentar Anda perlu memastikan bahwa pengguna tidak dapat menyuntikkan konten JavaScript aktif ke dalam halaman Anda.
Ini
adalah perhatian khusus dalam aplikasi web modern, di mana halaman
sekarang dibangun terutama dari konten pengguna, dan yang dalam banyak
kasus menghasilkan HTML yang kemudian juga ditafsirkan oleh kerangka
kerja front-end seperti Sudut dan Ember. Kerangka
kerja ini memberikan banyak perlindungan XSS, namun pencampuran server
dan rendering klien menciptakan jalan serangan baru dan yang lebih rumit
juga: tidak hanya menyuntikkan JavaScript ke dalam HTML yang efektif,
namun Anda juga dapat menyuntikkan konten yang akan menjalankan kode
dengan memasukkan arahan sudut, atau menggunakan Ember pembantu.
Kuncinya
di sini adalah fokus pada bagaimana konten buatan pengguna Anda bisa
lolos dari batas yang Anda harapkan dan ditafsirkan oleh browser sebagai
sesuatu yang lain seperti yang Anda inginkan. Ini mirip dengan mempertahankan terhadap injeksi SQL. Saat
membuat HTML secara dinamis, gunakan fungsi yang secara eksplisit
membuat perubahan yang Anda cari (misal gunakan element.setAttribute dan
element.textContent, yang akan otomatis lolos oleh browser, daripada
menyetel elemen.innerHTML dengan tangan), atau gunakan fungsi di alat templating Anda yang secara otomatis melakukan pelarian yang
tepat, daripada menggabungkan string atau menyetel konten HTML mentah.
Alat lain yang hebat di kotak peralatan pembela XSS adalah Content Security Policy (CSP). CSP
adalah header yang dapat dikembalikan server Anda yang memberitahukan
browser untuk membatasi bagaimana dan apa JavaScript dijalankan di
halaman, misalnya untuk melarang menjalankan skrip yang tidak dihosting
di domain Anda, tidak mengizinkan inline JavaScript, atau menonaktifkan
eval (). Mozilla memiliki panduan yang sangat baik dengan beberapa contoh konfigurasi. Hal ini membuat skrip penyerang lebih sulit bekerja, bahkan jika mereka bisa memasukkannya ke halaman Anda.
04. Error messages
Hati-hati dengan berapa banyak informasi yang Anda berikan dalam pesan kesalahan Anda. Berikan
sedikit kesalahan kepada pengguna Anda, untuk memastikan mereka tidak
menyimpan rahasia yang ada di server Anda (misalnya kunci API atau kata
kunci database). Jangan memberikan rincian
pengecualian penuh juga, karena ini dapat membuat serangan kompleks
seperti injeksi SQL jauh lebih mudah. Simpan kesalahan terperinci di log server Anda, dan tampilkan hanya informasi yang mereka butuhkan kepada pengguna.
05. Server side validation/form validation
Validasi harus selalu dilakukan baik pada sisi browser dan server. Browser dapat menangkap kegagalan sederhana seperti bidang wajib yang kosong dan saat Anda memasukkan teks ke bidang angka saja. Namun
ini dapat dilewati, dan Anda harus memastikan bahwa Anda memeriksa
validasi dan sisi validasi server yang lebih dalam karena gagal
melakukannya dapat menyebabkan kode berbahaya atau kode skrip dimasukkan
ke database atau dapat menyebabkan hasil yang tidak diinginkan di situs
web Anda.
06. Passwords
Semua orang tahu mereka harus menggunakan password yang rumit, tapi itu tidak berarti mereka selalu melakukannya. Penting untuk menggunakan kata kunci yang kuat ke area admin server
dan situs web Anda, namun sama pentingnya juga untuk meminta praktik
sandi yang baik bagi pengguna Anda untuk melindungi keamanan akun
mereka.Sebanyak pengguna mungkin tidak menyukainya, menerapkan persyaratan
password minimal delapan karakter, termasuk huruf besar dan nomor akan
membantu melindungi informasi mereka dalam jangka panjang.Sandi harus selalu disimpan sebagai nilai terenkripsi, sebaiknya menggunakan algoritma hashing satu arah seperti SHA. Dengan menggunakan metode ini berarti ketika Anda mengautentikasi pengguna, Anda hanya bisa membandingkan nilai terenkripsi. Untuk keamanan situs ekstra, ada baiknya Anda memasukkan garam ke password, menggunakan garam per kata kunci baru.Jika
seseorang melakukan hacking dan mencuri kata kunci Anda, dengan
menggunakan kata sandi hash dapat membantu mengurangi kerusakan, karena
penguraiannya tidak mungkin dilakukan. Yang
terbaik yang bisa dilakukan seseorang adalah serangan kamus atau
serangan brute force, yang pada dasarnya menebak setiap kombinasi sampai
menemukan kecocokan. Bila menggunakan kata sandi asin proses cracking sejumlah besar kata
sandi bahkan lebih lambat karena setiap tebakan harus dipanggang secara
terpisah untuk setiap kata kunci + garam yang sangat mahal secara
komputasi.Untungnya,
banyak CMS memberikan manajemen pengguna di luar kotak dengan banyak
fitur keamanan situs web yang ada di dalamnya, walaupun beberapa modul
konfigurasi atau tambahan mungkin diperlukan untuk menggunakan kata
sandi asin (pra Drupal 7) atau untuk menetapkan kekuatan kata kunci
minimum. Jika
Anda menggunakan .NET maka ada gunanya menggunakan penyedia keanggotaan
karena sangat dapat dikonfigurasi, berikan keamanan situs web inbuilt
dan sertakan kontrol readymade untuk proses masuk dan reset kata sandi.
07. File uploads
Mengizinkan
pengguna mengunggah file ke situs web Anda dapat menjadi risiko
keamanan situs web yang besar, meskipun hanya mengubah avatar mereka. Risikonya adalah file yang diupload namun tidak bersalah mungkin
terlihat, bisa berisi naskah yang bila dijalankan di server Anda
benar-benar membuka situs Anda.Jika Anda memiliki formulir upload file maka Anda perlu memperlakukan semua file dengan sangat curiga. Jika
Anda mengizinkan pengguna mengunggah gambar, Anda tidak dapat
bergantung pada ekstensi file atau jenis mime untuk memverifikasi bahwa
berkas itu adalah gambar karena foto ini dapat dengan mudah dipalsukan. Bahkan membuka file dan membaca header, atau menggunakan fungsi untuk mengecek ukuran gambar tidak full proof. Sebagian besar format gambar memungkinkan penyimpanan bagian komentar
yang bisa berisi kode PHP yang bisa dijalankan oleh server.Jadi apa yang bisa Anda lakukan untuk mencegah hal ini? Akhirnya Anda ingin menghentikan pengguna agar tidak dapat menjalankan file apa pun yang mereka unggah. Secara default, server web tidak akan mencoba mengeksekusi file dengan
ekstensi gambar, namun tidak disarankan untuk hanya mengandalkan
pengecekan ekstensi file sebagai file dengan nama image.jpg.php telah
diketahui bisa melewatinya.Beberapa
pilihan adalah mengganti nama file di upload untuk memastikan ekstensi
file yang benar, atau untuk mengubah hak akses file, misalnya chmod 0666
sehingga tidak dapat dijalankan. Jika
menggunakan * nix Anda bisa membuat file .htaccess (lihat di bawah)
yang hanya akan memungkinkan akses untuk mengatur file yang mencegah
serangan ekstensi ganda yang disebutkan sebelumnya.
deny from all
<Files ~ "^\w+\.(gif|jpe?g|png)$">
order deny,allow
allow from all
</Files>
Pada akhirnya, solusi yang disarankan adalah mencegah akses langsung ke file yang diupload bersama-sama. Dengan
cara ini, file apa pun yang diunggah ke situs web Anda disimpan di
folder di luar webroot atau di database sebagai gumpalan. Jika
file Anda tidak dapat diakses secara langsung, Anda perlu membuat skrip
untuk mengambil file dari folder pribadi (atau penangan HTTP di .NET)
dan mengirimkannya ke browser. Tag gambar
mendukung atribut src yang bukan merupakan URL langsung ke sebuah
gambar, jadi atribut src Anda dapat mengarah ke skrip pengiriman file
Anda sehingga Anda dapat mengatur jenis konten yang benar di header
HTTP. Sebagai contoh:
<img src="/
pengirimGambar
.php?id=1234" />
<?php
// pengirimGambar.php
//
Ambil nama file gambar dari database berdasarkan $_GET["id"]
...
//
Kirimkan gambar ke browser
Header('Content-Type: image/gif');
readfile('images/'.$fileName);
?>
Sebagian besar penyedia hosting menangani konfigurasi server untuk
Anda, namun jika Anda hosting situs web Anda di server Anda sendiri,
maka ada beberapa hal yang ingin Anda periksa.Pastikan Anda memiliki pengaturan firewall, dan memblokir semua port yang tidak penting. Jika memungkinkan menyiapkan Zona DMZ (Zona Demiliterisasi), hanya mengizinkan akses ke port 80 dan 443 dari dunia luar. Meskipun ini mungkin tidak mungkin dilakukan jika Anda tidak memiliki
akses ke server Anda dari jaringan internal karena Anda perlu membuka
port untuk memungkinkan mengunggah file dan masuk dari jarak jauh ke
server Anda melalui SSH atau RDP.Jika Anda membiarkan file yang diunggah dari Internet hanya
menggunakan metode transportasi yang aman ke server Anda seperti SFTP
atau SSH.Jika memungkinkan, database Anda berjalan di server yang berbeda dengan server web Anda. Dengan melakukan hal ini berarti server database tidak dapat diakses
langsung dari dunia luar, hanya server web Anda yang dapat mengaksesnya,
meminimalkan risiko data Anda terpapar.Akhirnya, jangan lupa membatasi akses fisik ke server Anda.
08. HTTPS
HTTPS adalah protokol yang digunakan untuk memberikan keamanan melalui Internet. HTTPS menjamin pengguna yang mereka ajak bicara ke server yang mereka
harapkan, dan tidak ada orang lain yang dapat mencegat atau mengubah
konten yang mereka lihat saat transit.Jika
Anda memiliki sesuatu yang mungkin diinginkan pengguna Anda secara
pribadi, sangat disarankan untuk hanya menggunakan HTTPS untuk
mengirimkannya. Itu
tentu saja berarti kartu kredit dan halaman login (dan URL yang mereka
kirimkan) tapi biasanya jauh lebih banyak dari situs Anda juga. Formulir
masuk akan sering menetapkan kuki misalnya, yang dikirim dengan setiap
permintaan lainnya ke situs Anda sehingga pengguna yang masuk log, dan
digunakan untuk mengotentikasi permintaan tersebut. Penyerang yang mencuri ini akan dapat dengan mudah meniru pengguna dan mengambil alih sesi login mereka. Untuk mengatasi serangan semacam ini, Anda hampir selalu ingin menggunakan HTTPS untuk keseluruhan situs Anda.IklanItu tidak lagi semudah dan mahal seperti dulu. Let's Encrypt menyediakan sertifikat gratis dan otomatis, yang Anda
perlukan untuk mengaktifkan HTTPS, dan ada alat komunitas yang ada untuk
berbagai platform umum dan kerangka kerja untuk menyiapkannya secara
otomatis untuk Anda.Terutama
Google telah mengumumkan bahwa mereka akan meningkatkan Anda di
peringkat pencarian jika Anda menggunakan HTTPS, memberikan manfaat SEO
ini juga. Ada
satu tongkat untuk pergi dengan wortel itu: Chrome dan peramban lainnya
berencana memberi peringatan lebih besar dan lebih besar di setiap
situs yang tidak melakukan ini, mulai dari bulan Januari 2017. HTTP yang
tidak aman sedang dalam perjalanan keluar, dan sekarang saatnya untuk meningkatkan.Sudah menggunakan HTTPS di mana-mana? Pergi
lebih jauh dan lihat pengaturan HTTP Strict Transport Security (HSTS),
sebuah header yang mudah Anda tambahkan ke tanggapan server Anda untuk
melarang HTTP yang tidak aman untuk keseluruhan domain Anda.
09. Website security tools
Setelah Anda berpikir Anda telah melakukan semua yang Anda bisa maka saatnya untuk menguji keamanan situs Anda. Cara paling efektif untuk melakukannya adalah dengan menggunakan
beberapa alat keamanan situs web, sering disebut pengujian penetrasi
atau pengujian pena singkat.Ada banyak produk komersial dan gratis untuk membantu Anda dalam hal ini. Mereka bekerja dengan basis yang sama dengan skrip yang akan digunakan
hacker karena mereka menguji semua eksploitasi dan mencoba kompromi
situs Anda dengan menggunakan beberapa metode yang disebutkan sebelumnya
seperti injeksi SQL.Beberapa alat gratis yang layak dilihat:Netsparker (edisi komunitas gratis dan versi percobaan tersedia). Bagus untuk pengujian injeksi SQL dan XSSOpenVAS. Klaim menjadi pemindai keamanan open source paling canggih. Bagus untuk menguji kerentanan yang diketahui, saat ini memindai lebih dari 25.000. Tapi bisa jadi sulit untuk setup dan membutuhkan server OpenVAS yang akan diinstal yang hanya berjalan di * nix. OpenVAS adalah garpu Nessus sebelum menjadi produk komersial closed-source.SecurityHeaders.io (cek online gratis). Alat untuk melaporkan dengan cepat header keamanan yang disebutkan di
atas (seperti CSP dan HSTS) domain telah diaktifkan dan dikonfigurasi
dengan benar.Xenotix XSS Exploit Framework Alat dari OWASP (Open Web Application
Security Project) yang mencakup banyak pilihan contoh serangan XSS, yang
dapat Anda jalankan untuk memastikan dengan cepat apakah masukan situs
Anda rentan di Chrome, Firefox dan IE.
Hasil dari tes otomatis bisa menakutkan, karena menyajikan banyak potensi masalah. Yang penting adalah fokus pada isu kritis terlebih dahulu. Setiap isu yang dilaporkan biasanya dilengkapi dengan penjelasan bagus tentang potensi kerentanan. Anda mungkin akan menemukan bahwa beberapa masalah menengah / rendah tidak menjadi perhatian situs Anda.Jika Anda ingin mengambil langkah lebih jauh maka ada beberapa langkah lebih lanjut yang dapat Anda lakukan untuk mencoba kompromi situs Anda secara manual dengan mengubah nilai POST / GET. Proxy debugging dapat membantu Anda di sini karena memungkinkan Anda untuk mencegat nilai permintaan HTTP antara browser dan server Anda. Aplikasi freeware populer yang disebut Fiddler adalah titik awal yang baik.Jadi, apa yang sebaiknya Anda coba ganti pada permintaan itu? Jika Anda memiliki halaman yang seharusnya hanya terlihat oleh pengguna yang masuk, saya akan mencoba mengubah parameter URL seperti id pengguna, atau nilai cookie dalam upaya untuk melihat rincian pengguna lain. Bidang lain yang patut diuji adalah formulir, mengubah nilai POST untuk mencoba mengirimkan kode untuk melakukan XSS atau mengunggah skrip sisi server.Semoga tips ini akan membantu menjaga keamanan situs dan informasi Anda. Untungnya sebagian besar CMS memiliki banyak fitur keamanan situs inbuilt, namun masih merupakan ide bagus untuk mengetahui eksploitasi keamanan yang paling umum sehingga Anda dapat memastikan bahwa Anda dilindungi.Ada juga beberapa modul yang berguna tersedia untuk CMSes untuk memeriksa instalasi Anda untuk kelemahan keamanan umum seperti Security Review untuk Drupal dan WP Security Scan untuk WordPress.
Hasil dari tes otomatis bisa menakutkan, karena menyajikan banyak potensi masalah. Yang penting adalah fokus pada isu kritis terlebih dahulu. Setiap isu yang dilaporkan biasanya dilengkapi dengan penjelasan bagus tentang potensi kerentanan. Anda mungkin akan menemukan bahwa beberapa masalah menengah / rendah tidak menjadi perhatian situs Anda.Jika Anda ingin mengambil langkah lebih jauh maka ada beberapa langkah lebih lanjut yang dapat Anda lakukan untuk mencoba kompromi situs Anda secara manual dengan mengubah nilai POST / GET. Proxy debugging dapat membantu Anda di sini karena memungkinkan Anda untuk mencegat nilai permintaan HTTP antara browser dan server Anda. Aplikasi freeware populer yang disebut Fiddler adalah titik awal yang baik.Jadi, apa yang sebaiknya Anda coba ganti pada permintaan itu? Jika Anda memiliki halaman yang seharusnya hanya terlihat oleh pengguna yang masuk, saya akan mencoba mengubah parameter URL seperti id pengguna, atau nilai cookie dalam upaya untuk melihat rincian pengguna lain. Bidang lain yang patut diuji adalah formulir, mengubah nilai POST untuk mencoba mengirimkan kode untuk melakukan XSS atau mengunggah skrip sisi server.Semoga tips ini akan membantu menjaga keamanan situs dan informasi Anda. Untungnya sebagian besar CMS memiliki banyak fitur keamanan situs inbuilt, namun masih merupakan ide bagus untuk mengetahui eksploitasi keamanan yang paling umum sehingga Anda dapat memastikan bahwa Anda dilindungi.Ada juga beberapa modul yang berguna tersedia untuk CMSes untuk memeriksa instalasi Anda untuk kelemahan keamanan umum seperti Security Review untuk Drupal dan WP Security Scan untuk WordPress.
Semoga Bermanfaat
0 komentar:
Posting Komentar