cara mengamankan dan melindungi website dari hacker


Tips keamanan untuk melindungi website anda dari hacker. Pernahkah anda membayangkan ketika anda bersusah payah membangun sebuah website dan ketika situs anda mulai dikenal banyak orang, saat itu juga banyak pesaing maupun orang2 jahil yang ingin mengacak2 bahkan mengambil server dari hosting anda. Hal ini sangat dikhawatirkan oleh setiap pemilik situs.
. Memang benar tidak ada sebuah situs yang amat sangat sempurna dimana situs tersebut tidak bisa diretas oleh para hacker, Akan tetapi kita bisa mengurangi hal tersebut demi mengamankan website kita dari serangan peretas, berikut tips dari saya:

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.

02. injeksi SQL

Serangan injeksi SQL adalah saat penyerang 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 pertanyaan ini:
"SELECT * FROM table WHERE column = '" + parameter + "';"
Jika penyerang mengubah parameter URL yang akan dilewati 'atau' 1 '=' 1, ini akan menyebabkan kueri terlihat seperti ini:
"SELECT * FROM table WHERE column = '' ATAU '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:tmt = $ pdo-> siapkan ('SELECT * FROM table WHERE column =: value'); $ stmt-> execute (array ('value' => $ parameter));

03. XSS

Serangan 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. Pesan kesalahan

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. Validasi sisi server / validasi form

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. Sandi

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. Upload file

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. menyangkal dari semua
    <Files ~ "^ \ w + \. (Gif | jpe? G | png) $">
    perintah menolak, memungkinkan
    biarkan dari semua
    </ 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:

     
<? php
      // imageDelivery.php
     
      // Ambil nama file gambar dari database berdasarkan $ _GET ["id"]
      ...
     
      // kirim gambar ke browser
       Header ('Content-Type: gambar / 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. Itu 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.

Nah itu semuah tips untuk mengamankan website anda.

Related Post