Panduan Lengkap untuk Mengeraskan API dan Aplikasi Web Inti Asp.Net Anda

Hormat kami, kaum Khabrov! Kami telah mempersiapkan untuk Anda terjemahan dari panduan yang berguna sebelum dimulainya kursus "C # ASP.NET Core Developer" .










Dengan setiap pembaruan .Net Core , Microsoft membuktikan bahwa .Net Core adalah kerangka kerja paling kuat, serbaguna, dan lengkap yang tersedia untuk mengembangkan aplikasi desktop , seluler , cloud, dan web yang kuat . Tidak seperti aplikasi desktop atau seluler, aplikasi web berjalan pada alamat publik, yang merupakan salah satu alasan mengapa keamanan aplikasi web sangat penting. Meskipun Asp.Net Core dirancang dengan praktik keamanan terbaik , masih ada beberapa kerentanan yang harus kami waspadai sebelum dan sesudah rilis Asp.Net Core kamiaplikasi.



Pada artikel ini, kita akan melihat beberapa celah keamanan di aplikasi web Asp.Net Core dan kemungkinan solusinya. Mari kita mulai dengan membuat daftar beberapa penting pertimbangan keamanan untuk kami Net aplikasi inti .



  1. Jadikan login Anda lebih aman
  2. Hanya mengirimkan data sensitif yang dienkripsi
  3. Ingatlah untuk menghapus cookie Anda saat keluar
  4. Selalu gunakan SSL
  5. Jangan pernah menyimpan data sensitif dalam database Anda secara eksplisit
  6. Jejak audit dan logging sangat penting
  7. Jangan pernah mengungkapkan kesalahan teknis asli kepada pengguna akhir
  8. Cross Site Scripting (XSS)
  9. Cobalah untuk menyembunyikan versi .Net Core Anda
  10. Pemalsuan Permintaan Lintas Situs (CSRF)
  11. LINQ dapat melindungi dari injeksi SQL
  12. Tambahkan pemeriksaan selama deserialisasi
  13. Selalu perbarui versi framework dan pustaka Anda


1. Jadikan login Anda lebih aman



Halaman login adalah pintu depan aplikasi apa pun. Pertimbangkan aplikasi seperti panel admin. Jika orang yang tidak berhak mendapatkan akses ke aplikasi Anda, mereka dapat mengontrol seluruh sistem. Oleh karena itu, langkah pertama Anda harus selalu membuat login Anda lebih aman.





Berikut beberapa tip untuk mengamankan titik masuk aplikasi Anda.



GUNAKAN AKUN KOMPLEKS



Jangan pernah menggunakan nama pengguna seperti admin dan kata sandi seperti 12345 , atau nama atau informasi pribadi Anda. Siapa pun dapat memanfaatkan kekurangan ini, dan bot akan dapat memperoleh kredensial tersebut dalam waktu yang sangat singkat.



LINDUNGI LOGIN ANDA



DARI BRUTFORS Brute Force adalah jenis serangan yang paling umum, yang menggunakan berbagai algoritme untuk brute force kombinasi nama pengguna dan kata sandiuntuk menebak kredensial login. Selain itu, sejumlah besar upaya masuk dapat membebani server Anda, yang dapat mengakibatkan DoS (Denial of Service) dan waktu henti bagi pengguna sebenarnya dari aplikasi Anda.



Serangan brute force membutuhkan lebih sedikit waktu untuk menebak nama pengguna dan kata sandi sederhana , tetapi mereka juga dapat menebak kombinasi yang rumit menggunakan serangan brute force yang sepele.



Jadi, bagaimana Anda melindungi aplikasi Asp.Net Anda dari serangan brute force?



Berikut beberapa tip untuk mencegah serangan brute force :



  • Gunakan Captcha di halaman login Anda, karena bot belum bisa menangani captcha.
  • IP .
  • , admin user, .
  • , (A-Z a-z), (0-9) (!, @,., #, $,%, ^, &, * ..).


Bagaimana cara menerapkan rekomendasi di atas?



Panduan di atas mungkin tampak rumit untuk diterapkan untuk pengembang Asp.Net Core pemula , tetapi jangan khawatir, ada pustaka HackerSpray yang sangat baik untuk membantu Anda melindungi pekerjaan Anda dari serangan brute force . Yang perlu Anda lakukan hanyalah mengkonfigurasinya.



SELALU GUNAKAN .NET CORE IDENTITY



Asp.Net Core memiliki banyak pustaka dan alat bawaan untuk mengamankan aplikasi Anda. Otorisasi juga memiliki implementasi luar biasa dari Microsoft yang memberi kami kustomisasi login dan registrasi penuh sesuai dengan praktik terbaik keamanan.



2. Transfer data sensitif hanya dalam bentuk terenkripsi



Jangan pernah secara eksplisit mengirimkan informasi sensitif Anda, seperti sandi atau kredensial kartu kredit , ke server untuk verifikasi. Peretas dapat mencuri data ini dengan mencegatnya sebelum mengirimkannya ke server.



Selalu gunakan algoritma hashing seperti md5 atau SHA256 untuk sandi dan algoritma enkripsi seperti AES atau DES di sisi klien, misalnya menggunakan jQuery .





3. Ingatlah untuk menghapus cookie saat keluar



Saat masuk ke aplikasi Asp.Net Core , kami menyimpan beberapa data yang diperlukan di Sesi untuk mempertahankan login pengguna sampai dia keluar. Di beberapa aplikasi, kami menetapkan batas waktu sesi , dan terkadang tidak, saat pengguna mencentang kotak yang menunjukkan keinginan mereka untuk tetap masuk di halaman login.



Pada saat yang sama, cookie AspNetCore.Session ditambahkan ke browser untuk melacak pengguna yang masuk .







Oleh karena itu, ketika kita keluar, kita juga perlu menghapus cookie yang dibuat oleh aplikasi kita dari browser , sejak peretasdapat menggunakan informasi ini untuk login yang tidak sah. Ini juga disebut serangan Fiksasi Sesi .



4. Selalu gunakan SSL



SSL adalah singkatan dari Secure Socket Layer . Ini mengenkripsi komunikasi antara klien dan server dengan kunci yang sangat kompleks.



Anda hanya dapat memberitahu Anda Asp.Net Inti aplikasi Starup.cs untuk selalu menggunakan kebijakan cookie aman.





5. Jangan pernah menyimpan data sensitif dalam database Anda secara eksplisit



Hampir setiap aplikasi web untuk menyimpan data pengguna membutuhkan database , yang sering diserang peretas untuk mencuri data pengguna ini. Jadi, katakanlah Anda menyimpan kredensial pengguna Anda seperti kata sandi dan spesifikasi penagihan di database Anda dengan sangat detail dan dengan cara yang bersih. Ternyata siapa pun yang mendapat akses tidak sah ke database Anda dapat menggunakan data ini untuk tujuan egois mereka sendiri.



Oleh karena itu, selalu simpan data sensitif di database Anda menggunakan hashing atau enkripsi .





6. Jejak audit dan penebangan sangat penting



Jejak audit atau log aktivitas sangat penting untuk mengikuti apa yang terjadi dalam aplikasi Anda. Jika seseorang menghasilkan sejumlah besar percobaan login yang gagal , maka administrator akan menerima email yang memberitahukannya tentang hal ini.



Misalnya, apakah pengguna membuat instance baru dari pengguna aplikasi atau mengubah peran yang sudah ada, setiap tindakannya harus tercermin dalam log aplikasi Asp.net Core Anda .







7. Jangan pernah mengungkapkan kesalahan teknis asli kepada pengguna akhir.



Beberapa pengecualian dapat mengungkapkan informasi penting tentang aplikasi Anda, atau bahkan terkadang menunjukkan beberapa baris kode kepada pengguna akhir. Para penyerang adalah orang-orang pintar, mereka dapat menggunakan informasi yang diberikan oleh pengecualian Anda untuk meretas aplikasi Anda.



Oleh karena itu, sebelum menerapkan aplikasi ke produksi, pastikan bahwa Anda telah membuat halaman untuk menampilkan kesalahan kepada pengguna untuk semua jenis pengecualian dan dengan benar menyimpan kesalahan di log aplikasi Anda.







8. Cross Site Scripting (XSS)



Dalam serangan XSS (Cross-Site Scripting) , peretas mengirim skrip berbahaya melalui kolom input untuk mencuri kredensial pengguna dan data sensitif lainnya.



Katakanlah kita memiliki formulir untuk menambahkan produk ke aplikasi. Peretas menambahkan produk baru dan di bidang deskripsi produk dia hanya memasukkan cuplikan kode JavaScript . Ketika aplikasi kami menampilkan produk ini pada halaman produk dengan deskripsi, skrip berbahaya peretas juga akan berjalan, dan itu akan menerima data yang dibutuhkannya.



Saya menemukan gambar di bawah ini di artikel XSS di Cloudflare . Ini akan membantu Anda mengirimkan XSS dengan lebih mudah.







Jadi bagaimana cara melindungi aplikasi Asp.Net Core dari serangan skrip lintas situs?



Anda dapat mengamankan aplikasi web Anda dengan mengikuti tip berikut:



  • Gunakan ekspresi reguler baik sisi klien maupun sisi server, dan hanya simpan data yang divalidasi dalam database Anda .
  • Enkripsi HTML dengan Razor membantu menangani skrip semacam itu.
  • XXS juga dapat dilakukan dengan enkripsi URL , jadi periksa parameter URL dan enkripsi dengan UrlEncoder .


Berikut artikel bagus dari Microsoft tentang melindungi aplikasi Anda dari XSS.



9. Cobalah untuk menyembunyikan versi .Net Core Anda



Dalam setiap respon HTTP dari server yang kami terima sebagai tanggapan atas permintaan yang kami kirimkan dari browser, selalu ada informasi tentang versi pengembangan aplikasi. Informasi semacam itu mempermudah penyerang untuk bekerja , menghemat waktu dan memungkinkannya menargetkan versi .Net tertentu .



Hal ini diperlukan untuk menciptakan lebih banyak hambatan bagi peretas dan mempersulit pekerjaan mereka dengan menyembunyikan informasi tentang versi .Net Framework .



Berikut cara menyembunyikan versi .Net Core :



  • Hapus X-Powered-By dari header respons.
  • <a href="https://www.nuget.org/packages/NWebsec.AspNetCore.Middleware/">NWebsec.AspNetCore.Middleware


Instal AddServerHeader = falseuntuk menghapus Server: header Kestrel.



Anda dapat menghapus X-Powered-By menggunakan potongan kode sederhana ini di fileweb.config



<httpProtocol>
 <customHeaders>
   <remove name="X-Powered-By" />
 </customHeaders>
</httpProtocol>


10. Pemalsuan permintaan lintas situs (CSRF)



Apakah Anda tahu tujuan atribut [ValidateAntiForgeryToken]di API Web Inti .Net Anda ? Mungkin Anda juga memperhatikan kode asp-antiforgery="true"di cshtmlfile Anda ?



Pertama kita perlu memahami CSRF (Cross-Site Request Forgery atau XSRF) , kemudian kita akan mencoba memahami tujuan dari tag dan atribut di atas.



Katakanlah Anda menggunakan e-banking dari rekening bank Anda untuk mengirim uang ke teman Anda, dan tiba-tiba Anda mendapatkan link FaceBook dari seorang wanita dengan avatar cantik. Saat Anda membuka tautan ini, Anda diminta mengeklik di sini untuk mendapatkan $ 1000... Anda cukup mengklik dan, karena Anda masuk dan berwenang untuk menggunakan e-banking Anda, tautan berbahaya ini menjalankan skrip dan mengirim uang dari akun Anda ke akun peretas.



Gambar di bawah ini dengan jelas menunjukkan CSRF.







Bagaimana Anda melindungi aplikasi Anda dari CSRF?



asp-antiforgery="true"membuat token anti-pemalsuan dan [ValidateAntiForgeryToken]memverifikasi di sisi server apakah token tersebut valid dan melindungi Anda dari pemalsuan permintaan lintas situs .



11. LINQ dapat melindungi dari injeksi SQL



Injeksi SQL adalah salah satu teknik yang paling umum digunakan untuk merusak data pengguna selama bertahun-tahun.



Dalam metode ini, peretas menempatkan beberapa karakter bersyarat atau khusus di bidang masukan, yang menyebabkan seluruh permintaan diubah.



Berikut adalah contoh bagus tentang apa itu injeksi SQL .





Bagaimana cara mengamankan aplikasi Asp.Net Core Anda dari injeksi SQL?



Berikut beberapa tip:



  • Gunakan Inti Kerangka Kerja Entitas
  • Selalu gunakan kueri berparameter.
  • Selalu validasi input sisi server.
  • Gunakan prosedur yang tersimpan.


12. Tambahkan pemeriksaan selama deserialization



Deserialization adalah kebalikan dari serialization, yang merupakan proses mengubah suatu objek menjadi aliran byte. Serialisasi selalu dilakukan di sisi server untuk mentransfer atau menyimpan objek, dan kami melakukan deserialisasi data yang diterima di aplikasi kami dari berbagai sumber.





Jadi, kami terbuka terhadap banyak arus berbahaya.



Untuk melindungi aplikasi Anda dari penyerang, kami perlu memvalidasi data sebelum dan sesudah deserialisasi.



13. Selalu perbarui versi framework dan library Anda



Selalu perbarui kerangka kerja dan pustaka yang digunakan dalam proyek Anda. Jangan pernah menggunakan pustaka usang dalam proyek Anda, karena penyerang selalu menemukan kerentanan di dalamnya.



Periksa pembaruan untuk paket NuGet yang digunakan dalam proyek Anda dan perbarui secara teratur.





KESIMPULAN



Tidak ada yang 100% aman, tetapi kami harus membuat aplikasi seaman mungkin dengan mengikuti praktik terbaik. Meskipun .Net Core dianggap sebagai salah satu platform paling aman, kami masih perlu memantau aktivitas di aplikasi kami dan mengambil tindakan cepat jika ada aktivitas berbahaya.



Terima kasih telah membaca artikel saya, semoga dapat memotivasi Anda untuk berpikir tentang membuat aplikasi Asp.Net Core Anda lebih aman .



Saya akan senang jika Anda ingin meninggalkan umpan balik Anda di bagian komentar di bawah.



Berikut beberapa artikel lain yang mungkin menarik bagi Anda:








Pelajari lebih lanjut tentang kursus tersebut






:






All Articles