Aktifkan atau nonaktifkan tautan URL dan penyandian HTML di kisi Anda dapat membuat tautan URL dan string penyandian HTML aktif atau tidak aktif saat muncul di kisi Show
Ini adalah bagian lima dari seri Lab Keamanan GitHub tentang 10 Kontrol Proaktif Teratas OWASP, di mana kami memberikan panduan praktis untuk pengembang dan pengelola OSS dalam meningkatkan kondisi keamanan Anda Sebagian besar serangan injeksi berasal dari apa yang kami sebut sebagai data yang dirusak. data atau pemformatan tak terduga dalam input dengan maksud untuk menemukan atau mengeksploitasi kerentanan. Dalam posting ini, saya akan membahas cara mempertahankan diri menggunakan panduan dari OWASP Top 10 Proactive Controls C4. Encode dan Escape Data—termasuk “mengapa” dan “apa” dari kontrol tersebut Pengkodean dan injeksi menurut OWASPDari dokumen OWASP tentang kontrol ini
Hingga 2017, daftar 10 Risiko Teratas dari OWASP mencantumkan cross-site scripting (XSS) terpisah dari “injection. Banyak (termasuk saya) yang menganggap XSS sebagai bentuk injeksi. Jadi, mengatakan bahwa pengkodean keluaran mencegah serangan injeksi adalah akurat dalam hal itu Serangan injeksi, penyandian, dan juru bahasaApa perbedaan antara melarikan diri dan penyandian? Saya akan menggunakan kedua istilah tersebut secara bergantian dalam posting ini. Singkatnya, tujuannya adalah bahwa pelolosan atau penyandian membantu merender input eksternal yang tidak aman menjadi aman dalam konteks yang dapat dieksekusi Bahaya sebenarnya dari serangan injeksi adalah bahwa mereka biasanya bersifat apa-yang-Anda-lihat-BUKAN-apa-yang-Anda-dapatkan. Dengan menggunakan skema penyandian yang berbeda yang akan sering didekode oleh penerjemah kami dengan "membantu" nanti, penyerang melewati pendekatan daftar tolak sederhana. Saya ingat sekali (di awal hari kesadaran keamanan saya, masih bekerja sebagai insinyur perangkat lunak) mencoba bertahan melawan injeksi SQL (SQLi) dengan mencari perintah yang tidak terduga seperti Pengkodean dapat digunakan dalam serangan maupun pertahanan. Dalam serangan, pengguna jahat mungkin mengirim Dalam kebanyakan kasus, penerjemah yang membantu adalah browser Anda, tetapi bisa juga lingkungan baris perintah atau perangkat lunak lain seperti driver database. Browser, dan karenanya XSS, mewakili permukaan target besar yang pengkodean keluarannya adalah teknik pencegahan. Saya juga akan membahas beberapa contoh lainnya. Mari kita gali XSS terlebih dahulu XSS dan pengkodean keluaranSkrip lintas situs (XSS) adalah kerentanan. Saat dieksploitasi, pengguna jahat menyuntikkan JavaScript mereka untuk berjalan di browser Anda dengan cara jahat dan biasanya tanpa sepengetahuan Anda Pertahanan utama untuk XSS adalah “pengkodean keluaran. " Apa artinya? . Singkatnya, pengkodean keluaran memungkinkan rendering yang aman dari karakter tertentu ke penafsir target Konteks adalah kuncinyaKonteks sangat penting dalam setiap diskusi tentang XSS, browser, dan penyandian. Di browser, ketika kita berbicara tentang konteks, kita terutama berbicara tentang di mana konten dirender. Ada empat konteks
Setiap konteks memiliki sistem pengkodeannya sendiri. Artinya, Anda menyandikan untuk JavaScript jika Anda mengeluarkan konten antara Pengodean dengan benar itu sulitSaran konvensional dan bijak adalah menyandikan data apa pun yang Anda hasilkan dari sumber yang tidak tepercaya (pengguna atau sumber eksternal apa pun) untuk konteks yang tepat (lihat di atas). Ini banyak yang harus dilakukan dengan benar Saya pernah melakukan pelatihan untuk grup yang memiliki temuan XSS di sebuah aplikasi. Kami menjeda pelatihan untuk mempelajari aplikasi dan kode yang terpengaruh untuk melakukan latihan langsung. Saat kami memeriksa Bang untuk uang Anda untuk pengembang aplikasiJadi, ketika Anda ingin bertahan melawan sesuatu yang sulit dan berpotensi meluas seperti XSS dengan pengkodean, Anda perlu pengkodean itu otomatis. Itu harus menjadi sesuatu yang tidak perlu Anda pikirkan terus-menerus. OWASP mencantumkannya sebagai dalam dokumen pencegahan skrip lintas situs mereka. Saya sarankan mulai dari sini. Pilih mesin template/output Anda sedemikian rupa sehingga penyandian terjadi secara otomatis untuk konteks yang tepat. Ini berarti perlu diganti atau dinonaktifkan secara eksplisit untuk membuatnya tidak aman Kerangka kerja penyandian otomatis/mesin templatDokumen OWASP mengenai kontrol ini juga mengatakan
Di sinilah kerangka kerja dan mesin template berperan. Untuk membuat hidup anti-XSS Anda lebih mudah, gunakan kerangka kerja yang secara default melakukan penyandian keluaran dengan aman (yang akan dilakukannya saat meneruskan konten ke penafsir target). Ini beberapa
Apakah ini semua dijamin 100% bebas XSS selamanya? . Daftar ini tidak lengkap. Jika Anda ingin menggunakan sesuatu yang tidak ada di dalamnya, luangkan waktu untuk meneliti dan bahkan mungkin bertanya-tanya apakah mesin templating atau perpustakaan itu lolos otomatis atau melakukan penyandian keluaran sesuai dengan konteks secara default Jangan melarikan diri melarikan diriSaat Anda menggunakan pustaka atau kerangka kerja yang menangani penyandian keluaran (atau pelolosan) untuk Anda secara default, jangan abaikan itu. Beberapa kerangka kerja membuatnya sangat jelas bahwa Anda melakukannya (seperti Bereaksi dan Skenario enkode atau pelolosan lainnyaXSS dan browser adalah contoh utama penggunaan pengkodean secara defensif. Namun, 'ujung depan' aplikasi web bukan satu-satunya tempat Anda harus menggunakan penyandian untuk menjaga keamanan aplikasi Anda Seperti yang saya sebutkan sebelumnya, menggunakan kueri berparameter adalah bentuk penyandian/lolos dari masukan yang berpotensi berbahaya yang dimaksudkan untuk menyebabkan injeksi SQL. Penjelasan bagus yang ditawarkan kepada saya adalah bahwa input berbahaya dapat digunakan untuk mencampur bidang kontrol (kueri) dan bidang data (seperti nilai dalam klausa Dalam injeksi perintah, karakter baris baru yang tidak terduga ( Tipuan sebagai penyandianAkan ada saatnya (yaitu ketika mencoba mencegah injeksi perintah) di mana Anda tidak dapat menyandikan (atau regex) dengan cara Anda menuju penggunaan yang aman. Dalam kasus seperti itu, pertimbangkan tipuan atau abstraksi. Apa ini biasanya berarti bahwa Anda menawarkan nilai yang telah ditentukan sebelumnya (seperti Gesekan yang bagusPengodean dan pelolosan selain validasi akan selalu menambah hambatan pada aplikasi atau layanan Anda, tetapi tidak semua hambatan itu buruk. Dalam hal pencegahan serangan, anggap saja seperti rem pada mobil. itulah yang memungkinkan Anda untuk pergi dengan cepat di sisa waktu Lihat seri OWASP Top 10 Proactive Controls lainnya, atau ikuti GitHub Security Lab di Twitter untuk penelitian keamanan terbaru Bagaimana cara menonaktifkan penyandian URL?Dengan menggunakan kueri permintaan menggunakan $request->getQuery() lalu $query->useUrlEncoding(false); Anda dapat menonaktifkan UrlEncoding.
Pengkodean mana yang terbaik untuk HTML?Spesifikasi HTML5 mendorong pengembang untuk menggunakan rangkaian karakter UTF-8 . Panjang karakter bisa 1-4 byte dalam Standar Pengkodean UTF-8. Ini juga merupakan penyandian yang paling disukai untuk email dan halaman web. Pengkodean karakter dapat ditentukan dalam tag meta di HTML. |