Untuk mengelakkan input berniat jahat, aplikasi melaksanakan beberapa mekanisme keselamatan yang secara konsepnya serupa.
Mekanisme keselamatan ini terdiri daripada aspek berikut:
Memproses akses Biasanya terdapat pelbagai jenis pengguna aplikasi, seperti pengguna biasa, Log masuk untuk mengesahkan pengguna dan pentadbir. Keizinan yang berbeza diberikan kepada aplikasi web pengguna yang berbeza supaya mereka hanya boleh mengakses data dan fungsi yang berbeza. Aplikasi web mengendalikan akses pengguna melalui tiga mekanisme keselamatan yang saling berkaitan:1. Memproses data dan fungsi akses pengguna kepada aplikasi web (mencegah akses tanpa kebenaran)
2. Memproses input data oleh pengguna ke fungsi aplikasi web (menghalang pembinaan data berniat jahat) 3 Menjawab serangan (mengendalikan laporan ralat yang tidak dijangka, menyekat serangan yang jelas secara automatik, menghantar makluman kepada pentadbir, program Penyelenggaraan secara automatik. log akses) 4 Pengurusan dan penyelenggaraan aplikasi
1 Pengesahan 2. Pengurusan sesi (Pengurusan Sesi) 3 Kawalan Akses (Kawalan Akses), capaian yang tidak dibenarkan akan berlaku (prinsip tong).
Pengesahan
Kebanyakan aplikasi web hari ini menggunakan model pengesahan tradisional, iaitu nama pengguna dan kata laluan.
Dalam aplikasi dengan keperluan keselamatan yang lebih tinggi seperti perbankan, sijil lain, pengesahan dua faktor, dll. akan digunakan untuk mengukuhkan model ini dalam aplikasi dengan keperluan keselamatan yang lebih tinggi, sijil pelanggan, kad pintar atau pertanyaan mungkin diperlukan -Mekanisme jawapan dan model pengesahan lain.
Mekanisme pengesahan selalunya memerlukan satu siri fungsi sokongan lain, seperti pendaftaran, kata laluan terlupa, penukaran kata laluan, dsb.
Terdapat beberapa kelemahan biasa dalam mekanisme pengesahan, seperti traversal nama pengguna, kata laluan yang lemah, kelemahan logik untuk mengelakkan log masuk, pertanyaan pangkalan data kejuruteraan sosial, dsb.
Pengurusan Sesi
Token sesi biasanya dihantar dalam kuki, dan kadangkala muncul pada medan borang tersembunyi atau rentetan pertanyaan URL Token sesi akan tamat tempoh dalam tempoh masa selepas menghentikan permintaan.
Sesetengah aplikasi tidak menggunakan token sesi untuk mengenal pasti sesi, sebaliknya mengenal pasti sesi dengan menghantar sijil pengguna berulang kali (ini adalah kes dengan mekanisme pengesahan terbina dalam http, yang mengenal pasti sesi dengan menghantar berulang kali kata laluan akaun yang disulitkan dengan base64 ). Dalam sesetengah kes, maklumat sesi tidak disimpan pada pelayan, tetapi pada klien Untuk menghalang pengguna daripada mengubahnya, ia biasanya disulitkan.
Permukaan serangan pengurusan sesi ialah token sesi itu sendiri Dengan membuat kesimpulan peraturan penjanaan token sesi atau memintas token sesi pengguna lain, anda boleh mengakses fungsi dan data yang tidak dibenarkan seperti yang lain.
Kawalan Akses
Oleh kerana keperluan kawalan capaian biasa adalah agak kompleks, setiap peranan mempunyai kebenaran yang berbeza, dan setiap pengguna hanya dibenarkan untuk mengakses sebahagian daripada data dan fungsi dalam aplikasi itu, secara amnya terdapat sejumlah besar kelemahan dalam mekanisme ini, yang boleh menyebabkan masalah masa depan.
Memproses input
Kepelbagaian input
Kaedah pemprosesan input
1. Senarai hitam
Senarai hitam mengandungi satu set rentetan atau corak yang akan digunakan dalam serangan Semua data yang sepadan dengan senarai hitam akan disekat.
Senarai hitam ialah cara paling kurang berkesan untuk mengesahkan input. Terdapat dua sebab:
1) Input pengguna boleh dipintas melalui pelbagai pengekodan atau bentuk ungkapan lain, seperti kehilangan beberapa aksara yang mempunyai kesan yang sama. Contohnya, jika alert('xss') disekat, anda juga boleh menggunakan prompt('xss'). Contohnya, firewall aplikasi web selalunya tertakluk kepada serangan null byte (null) Ini kerana rentetan diproses secara berbeza dalam managed dan situasi yang tidak terurus.2) Perkembangan teknologi yang pesat telah menghasilkan beberapa kaedah baharu untuk mengeksploitasi kelemahan.
2. Senarai putih
Senarai putih mengandungi set rentetan, corak atau set standard. Semua data yang tidak sepadan dengan senarai putih akan disekat.
Senarai putih ialah kaedah terbaik untuk pengesahan input, kerana hanya rentetan selamat akan ditinggalkan apabila menentukan senarai putih dan penyerang tidak boleh membina input.
Tetapi penyenaraian putih mempunyai had. Dalam kebanyakan kes, aplikasi web mesti menerima beberapa aksara yang tidak memenuhi piawaian keselamatan Contohnya, aplikasi memerlukan pengguna mendaftar dengan nama sebenar mereka, tetapi nama tersebut mengandungi beberapa tanda sempang, tanda kutip dan aksara lain yang boleh menyebabkan serangan pada pangkalan data. . Oleh itu, senarai putih mempunyai had dan bukan penyelesaian universal kepada input yang tidak selamat.
3. Pemurnian
Kaedah ini menyelesaikan masalah yang tidak dapat dikendalikan oleh senarai putih yang tidak dapat menjamin keselamatan, tetapi akan membersihkannya, seperti pemadaman, pengekodan dan pengekodan. penulenan
lain boleh digunakan sebagai kaedah umum, tetapi perlu diingat bahawa jika item input perlu menampung beberapa kemungkinan data berniat jahat, ia boleh berkembang dengan berkesan. Dalam kes ini, pengesahan sempadan diperlukan.
4. Pemprosesan data selamat
Memproses data yang diserahkan pengguna dengan cara yang tidak selamat adalah punca banyak kelemahan aplikasi web.
Kaedah pemprosesan data selamat yang tidak perlu risau tentang mengesahkan data input pengguna, sebaliknya memastikan keselamatan mutlak proses pemprosesan. Contohnya, pertanyaan berparameter untuk menghalang suntikan sql.
Tetapi kaedah ini tidak terpakai pada setiap tugas yang perlu dilakukan oleh aplikasi web, jika berkenaan, ia adalah kaedah umum untuk mengendalikan input berniat jahat.
5. Semakan logik
Dalam beberapa kelemahan, input penyerang dan pengguna biasa adalah sama, tetapi motivasinya adalah berbeza dalam kes ini tidak berkesan. Contohnya, menyerang akaun yang diserahkan dengan mengubah suai medan borang tersembunyi dalam percubaan untuk mengakses akaun pengguna lain. Pada ketika ini, tiada jumlah pengesahan input dapat membezakan data penyerang daripada data pengguna biasa. Untuk menghalang akses tanpa kebenaran, aplikasi mesti mengesahkan bahawa akaun yang diserahkan adalah milik pengguna yang telah menyerahkan akaun tersebut sebelum ini.
Memandangkan sifat masalah keselamatan teras (semua input pengguna tidak dipercayai), seseorang boleh mempertimbangkan sempadan antara Internet (tidak dipercayai) dan aplikasi pelayan (dipercayai), dan kemudian Bersihkan semua input daripada Internet di sempadan dan hantar data yang telah dibersihkan ke aplikasi pelayan. Di atas adalah pengesahan sempadan yang mudah Apabila menganalisis kelemahan sebenar, didapati bahawa melakukan pengesahan input mudah ini tidak mencukupi.
Berdasarkan keluasan fungsi yang dilakukan oleh aplikasi dan kepelbagaian teknologi yang diterima pakai, aplikasi biasa perlu bertahan daripada sejumlah besar pelbagai serangan input, yang setiap satunya mungkin menggunakan data Reka Bentuk khusus yang berbeza sama sekali, jadi sukar untuk mewujudkan mekanisme mudah di sempadan luar untuk bertahan daripada semua serangan.
Banyak ciri aplikasi direka untuk menggabungkan satu siri proses yang berbeza Satu input daripada pengguna boleh melakukan banyak operasi dalam banyak komponen, di mana output operasi sebelumnya digunakan dalam operasi berikutnya. Data diubah dan berbeza sama sekali daripada input asal. Walau bagaimanapun, penyerang berpengalaman boleh memanfaatkan perbezaan ini untuk menjana data berniat jahat pada langkah kritikal dan menyerang komponen yang menerima data. Oleh itu, adalah sukar untuk mewujudkan mekanisme mudah di sempadan luar untuk bertahan daripada semua serangan.
Pengesahan sempadan ialah model yang lebih cekap. Sempadan di sini tidak lagi terhad kepada sempadan antara Internet dan aplikasi web Setiap komponen atau unit fungsi aplikasi web mempunyai sempadan. Dengan cara ini, setiap komponen boleh mempertahankan dirinya daripada jenis input yang direka khas yang diterimanya. Apabila data melalui komponen yang berbeza, semakan pengesahan boleh dilakukan pada data yang dijana sebelum ini, dan memandangkan semakan pengesahan yang berbeza dilakukan pada peringkat pemprosesan yang berbeza, tidak ada kemungkinan konflik antara mereka.
Sebagai contoh, gambar berikut:
Semasa proses semakan pengesahan, apabila ia perlu diproses dalam beberapa langkah Apabila pengguna memasukkan, akan ada masalah yang sering dihadapi oleh mekanisme input. Masalah ini berlaku apabila aplikasi cuba membersihkan input pengguna dengan mengalih keluar atau mengekod aksara tertentu. Jika masalah ini tidak dikendalikan dengan berhati-hati, penyerang boleh membina input khusus supaya data berniat jahat boleh berjaya memintas mekanisme pengesahan. Contohnya, pintasan tulis dua kali dan pintasan urutan pelaksanaan langkah.
Penormalan data mencipta masalah lain. Untuk menghantar beberapa aksara dan data binari yang tidak biasa melalui http, ia biasanya dinormalisasi melalui pengekodan Walau bagaimanapun, jika penyahkodan dilakukan selepas penapisan dilaksanakan, penyerang boleh mengelakkan mekanisme pengesahan melalui pengekodan.
Selain skema pengekodan standard yang digunakan oleh aplikasi web, kes lain jika komponen aplikasi menukar data daripada satu set aksara kepada yang lain, ini juga boleh menyebabkan masalah penormalan. Sebagai contoh, Ÿ dan  ditukar kepada Y dan A. Penyerang sering menggunakan kaedah ini untuk menghantar aksara dan kata kunci yang disekat.
Kadangkala sukar untuk mengelakkan masalah yang disebabkan oleh pengesahan dan penormalan berbilang langkah, dan tiada penyelesaian tunggal untuk masalah ini. Bagaimanakah mungkin untuk mengelak daripada membersihkan input yang tidak baik dan sebaliknya menolak input tersebut sama sekali.
Kami telah mencuba sedaya upaya untuk menghalang penyerang daripada menceroboh, tetapi tiada sistem yang benar-benar selamat Jika insiden keselamatan berlaku, bagaimanakah aplikasi web harus bertindak balas terhadap serangan itu? Apakah langkah pengendalian? Secara amnya, ia adalah seperti berikut:
Kendalikan ralat1 Mengendalikan laporan ralat yang tidak dijangka
2. Sekat serangan yang jelas secara automatik makluman kepada pentadbir
4. Mengekalkan log akses program
Mekanisme utama aplikasi ialah cara mengendalikan ralat yang tidak dijangka . Secara amnya dalam persekitaran pengeluaran, aplikasi tidak seharusnya mengembalikan sebarang maklumat yang dijana sistem atau maklumat penyahpepijatan lain kepada pengguna. Maklumat ini memberikan penyerang maklumat rujukan yang baik untuk serangan seterusnya. Dan ralat yang tidak dijangka sering menunjukkan beberapa kecacatan dalam mekanisme pertahanan program. Mekanisme pengendalian ralat sering disepadukan dengan mekanisme pembalakan.
Mengatasi SeranganBanyak serangan akan menghantar sejumlah besar watak berniat jahat biasa Dalam kes sedemikian, aplikasi harus mengambil langkah tindak balas automatik untuk menghalang penyerang daripada mengesannya. Contohnya, tamatkan sesi, perlukan log masuk semula, larang IP, dsb.
Kekalkan logLog akan merekodkan situasi pencerobohan dan proses pencerobohan boleh masih boleh dipulihkan selepas pencerobohan.
Log aplikasi penting hendaklah merekodkan semua permintaan. Secara amnya, ia harus mengandungi sekurang-kurangnya item berikut:
1 Semua acara yang berkaitan dengan pengesahan, seperti log masuk yang berjaya atau gagal, pengubahsuaian kata laluan2 Pemindahan, dsb.
3. Permintaan disekat oleh kawalan akses
4. Mengandungi rentetan serangan yang diketahui
Log akan merekodkan masa, IP, Akaun Pengguna. Log perlu dilindungi dengan ketat daripada bacaan yang tidak dibenarkan. Menulis, mengubah suai, dsb. Log
juga akan menjadi permukaan serangan Contohnya, log yang boleh diakses tanpa kebenaran akan memberikan penyerang maklumat sensitif seperti token sesi, parameter permintaan, dsb.
Makluman kepada pentadbirMasalah utama ialah positif palsu dan negatif palsu, yang boleh diperbaiki dengan menggabungkan mekanisme amaran dengan mekanisme pengesahan dan kaedah kawalan lain.
Secara amnya, kejadian luar biasa yang dipantau termasuk yang berikut:
1 Aplikasi tidak normal, seperti menerima sejumlah besar permintaan daripada IP2. Urus niaga adalah tidak normal, seperti jumlah dana yang dipindahkan masuk dan keluar dari akaun bank adalah tidak normal
3 Mengandungi rentetan serangan yang diketahui
Data dalam permintaan yang tidak boleh dilihat oleh pengguna biasa diubah suai
Urus Aplikasi
Mekanisme pengurusan ialah salah satu permukaan serangan utama aplikasi, dan mekanisme pengurusan selalunya mempunyai kebenaran yang sangat tinggi. Mendapat kawalan ke atas mekanisme pengurusan adalah memperoleh kawalan ke atas aplikasi. Selain itu, selalunya terdapat beberapa kelemahan yang jelas dan fungsi sensitif dalam mekanisme pengurusan. Kerentanan yang mendapat kebenaran pentadbir biasanya berlaku dalam mekanisme untuk mengendalikan akses pengguna, seperti akses tanpa kebenaran, kata laluan yang lemah, dll. Jika latar belakang pengurusan boleh mengendalikan permintaan yang dihantar oleh pengguna biasa, anda boleh cuba menaip kelemahan XSS secara membuta tuli ke latar belakang.
Atas ialah kandungan terperinci Apakah mekanisme pertahanan teras Aplikasi Web?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!