Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Apakah mekanisme pertahanan teras Aplikasi Web?

Apakah mekanisme pertahanan teras Aplikasi Web?

WBOY
WBOYke hadapan
2023-05-11 20:46:19886semak imbas


Untuk mengelakkan input berniat jahat, aplikasi melaksanakan beberapa mekanisme keselamatan yang secara konsepnya serupa.

Mekanisme keselamatan ini terdiri daripada aspek berikut:

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

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 Pengesahan

2. Pengurusan sesi (Pengurusan Sesi)

3 Kawalan Akses (Kawalan Akses)

, capaian yang tidak dibenarkan akan berlaku (prinsip tong).

Pengesahan

Pengesahan ialah mekanisme pertama untuk mengendalikan akses pengguna Melainkan tapak web hanya mempunyai satu pengguna, pengesahan mesti digunakan.

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

Selepas lulus pengesahan, tiba masanya untuk mengurus sesi pengguna. Untuk melaksanakan kawalan akses, aplikasi perlu mengenal pasti pelbagai permintaan yang dikemukakan oleh pengguna yang berbeza untuk melakukan ini, aplikasi perlu menubuhkan sesi untuk setiap pengguna dan menghantar token yang mewakili sesi, iaitu, token sesi, kepada pengguna. Sesi itu sendiri ialah satu set struktur data yang disimpan pada pelayan yang menjejaki keadaan interaksi antara pengguna dan aplikasi.

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

Jika pengesahan dan pengurusan sesi sebelumnya berjalan seperti biasa, aplikasi boleh mengesahkan identiti dan status interaksi setiap pengguna melalui token sesi dalam setiap permintaan, jadi ia boleh membuat keputusan sama ada bersetuju dengan permintaan pengguna.

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

Semua input pengguna tidak boleh dipercayai kebanyakan serangan pada aplikasi web berkaitan dengan input yang dibina khas oleh penyerang oleh itu, memproses input pengguna dengan selamat adalah kunci untuk melindungi aplikasi kepada keselamatan program.

Kepelbagaian input

Aplikasi web mungkin melakukan semakan yang sangat ketat pada beberapa input khas, seperti had panjang, had aksara, dsb. kadangkala mereka mungkin perlu menerima sebarang input yang diserahkan oleh pengguna ; Walau bagaimanapun, medan borang tersembunyi dan kuki dijana pada pelayan dan dihantar semula kepada klien, dan kemudian dihantar semula ke pelayan oleh permintaan pengguna Semasa proses ini, penyerang boleh melihat dan mengubah suainya.

Kaedah pemprosesan input

Gunakan kaedah pemprosesan yang berbeza dalam situasi yang berbeza, atau gunakan kaedah tersebut dalam kombinasi.

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.

Pengesahan Sempadan

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:

Web Application核心防御机制是什么

Pengesahan dan penormalan berbilang langkah

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.

Membalas Serangan

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:

1 Mengendalikan laporan ralat yang tidak dijangka

2. Sekat serangan yang jelas secara automatik makluman kepada pentadbir

4. Mengekalkan log akses program

Kendalikan ralat

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 Serangan

Banyak 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 log

Log 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 laluan

2 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 pentadbir

Masalah 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 IP

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

Program pengurusan boleh membantu pentadbir mengurus akaun dan peranan pengguna, menggunakan fungsi pemantauan dan pengauditan, melaksanakan tugas diagnostik dan mengkonfigurasi pelbagai ciri 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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam