cari
Rumahpembangunan bahagian belakangtutorial phpKaedah sekatan akses aset - Blok pelawat yang tidak diingini

3

Takeaways Key Asset Access Restriction Methods - Block Unwanted Visitors

Melaksanakan kawalan akses ke aset anda adalah penting untuk keselamatan. Whitelisting adalah pendekatan yang disyorkan, di mana penjaga pintu hanya membolehkan entiti yang dipercayai untuk mengakses aset anda. Penjaga pintu ini boleh diletakkan di pelayan HTTP atau kod aplikasi, menyediakan alat untuk memeriksa http_host. Kaedah sekatan akses aset - Blok pelawat yang tidak diingini

Pelayan HTTP boleh mengendalikan kawalan akses dengan cekap tanpa perlu memadamkan kod aplikasi untuk setiap permintaan. Bergantung pada pelayan, kaedah yang berbeza seperti mod_rewrite atau membenarkan/menafikan dalam apache, atau httpreferermodule dalam nginx boleh digunakan. Walau bagaimanapun, skalabiliti pendekatan ini boleh menjadi cabaran jika terdapat banyak domain untuk mengurus atau kerap perubahan.

Kawalan akses di peringkat kod aplikasi menawarkan lebih banyak fleksibiliti. Kaedah ini juga boleh mengendalikan situasi iframe, di mana perujuk tidak memberikan maklumat mengenai status iframe. Walau bagaimanapun, kedua-dua kaedah pelayan HTTP dan kod aplikasi tidak mudah alih dan penjaga pintu berasaskan token seperti OAuth disyorkan untuk keselamatan yang dipertingkatkan.
  • Apabila membina aplikasi web atau laman web yang hebat, kadang -kadang kita mahu orang ramai dapat membenamkan bahagian aplikasi/laman web kami ke dalam mereka sendiri. Itu boleh menjadi iframe memegang butang 'suka', imej mudah yang mereka mahu gunakan semula atau bahkan keseluruhan aplikasi kami yang tertanam dalam iframe.
  • Tetapi bagaimana kita mengawal siapa yang mempunyai akses, siapa yang dibenarkan menggunakan jalur lebar kami dan menanyakan perkhidmatan kami?
  • kami menentukan masalah sebagai
mengendalikan akses

ke

aset

oleh aset yang kita maksudkan: apa sahaja yang boleh dipersoalkan dari laman web kami. Sekatan Akses: Benarkan beberapa, blok semua Apabila bercakap mengenai kawalan akses, kami memasukkan domain keselamatan. Dan apabila bercakap keselamatan, senarai putih harus menjadi pendekatan yang diambil untuk menangani masalah tersebut. Lebih mudah untuk mengawal siapa yang dibenarkan mengakses aset

anda

daripada mengawal siapa yang tidak. Tidak mustahil untuk mengetahui semua raksasa boogie Internet.

Untuk melindungi aset

kami

, kami mengupah penjaga pintu untuk hanya membiarkan orang yang kami percayai. Setelah disewa, kami memberinya akses kepada Whitelist yang kami kendalikan, dan biarkan dia melakukan semua mengangkat berat. Masalah diselesaikan. Tetapi bagaimanakah pengangkat pintu masuk? Taktik mengangkat

Bergantung pada seberapa selamat yang anda mahukan penjaga pintu dan apa yang diminta oleh pelanggan, taktik yang berbeza boleh digunakan. Pendekatan biasa yang digunakan ialah memeriksa tajuk rujukan. Kaedah itu mempunyai 3 kelemahan besar:

  1. Rujukan juga ditetapkan apabila orang mengakses laman web anda menggunakan pautan
  2. Rujukan dihantar ke pelayan anda oleh klien, dan boleh diubah
  3. Rujukan mungkin tidak ditetapkan sama sekali
Walau bagaimanapun, untuk aset statik seperti imej, JS dan CSS, kelemahan tersebut tidak menjadi masalah. Aset anda hanya boleh dimuatkan apabila pengguna melawat laman web kami secara langsung (atau dari laman web yang dipercayai). Idea umum adalah untuk menghalang orang lain yang menghiasi mereka. Oleh itu, rujukan akan sentiasa berada di senarai putih anda. Kecuali anda tidak mempercayai diri sendiri - tetapi kemudian anda mempunyai masalah yang lebih besar.

bro, adakah anda mengangkat?

Bergantung pada persediaan yang digunakan, pertanyaan yang dibuat melalui satu siri

Gates . Persediaan mudah ialah: klien -> pelayan http -> kod aplikasi

Jadi di manakah penjaga pintu anda duduk? Pelanggan adalah de facto tidak pergi untuk kawalan akses kerana dia adalah sekeping manusia yang tidak boleh dipercayai. Pelayan HTTP dan kod aplikasi di sisi lain adalah pilihan yang berguna. Kedua -duanya memberi kami alat yang kuat untuk memeriksa http_host.

pelayan http tahu cara mengangkat

Kekuatan dalam mempunyai pelayan HTTP anda mengendalikan kawalan akses anda adalah kelajuan. Tidak perlu membakar kod permohonan untuk setiap permintaan. Ini secara drastik dapat meningkatkan prestasi kerana kita tidak perlu memuatkan keseluruhan stack/thread aplikasi (mis. Mod_php) ke dalam ingatan.

Bergantung pada pelayan HTTP anda, penyelesaian yang berbeza boleh didapati.

Apache

Di Apache, terdapat dua kaedah yang berbeza. Kita boleh menggunakan mod_rewrite atau membenarkan/menafikan.

Kaedah mod_rewrite:

# Turn mod_rewrite on
RewriteEngine On

# if it is not trusted.domain.tld block it
RewriteCond %{HTTP_REFERER} !^trusted\.domain\.tld$ [NC]
RewriteCond %{HTTP_REFERER} !^trusted\.tld$ [NC]
RewriteRule ^ - [F]
mod_rewrite disokong oleh kebanyakan penyedia hosting.

kaedah membenarkan/menafikan:

#specify the files to guard, block all the assets
<files>
  #block everyone
  Deny from all
  #allow trusted ones
  Allow from trusted.tld trusted.domain.tld
</files>
tidak semua tuan rumah menyokong tetapan tersebut.

nginx

httpreferermodule di nginx memberi kita valid_referers yang sangat sejuk: jadi semua yang perlu kita lakukan adalah, mengembalikan kod http 444 apabila domain yang tidak dipercayai cuba mengakses aset kita:

Sambungan tanpa menghantar sebarang tajuk ...

pelayan http tidak berfikir
location / {
  valid_referers trusted.tld trusted.domain.tld;
  if ($invalid_referer) {
    return   444;
  }
}

Masalah besar di sini adalah skalabilitas: Bagaimana jika kita mempunyai 1000 domain yang perlu dapat mengakses aset kita? Bagaimana jika senarai domain sering berubah?

Untuk setiap pengeditan kecil, kita perlu menyelam ke dalam fail konfigurasi kami - dan semakin banyak anda berubah secara manual, semakin banyak yang boleh salah.

kod aplikasi tahu apa yang harus dilakukan

Mempunyai kawalan akses anda pada tahap kod aplikasi anda bermakna lebih banyak fleksibiliti. Seseorang boleh mempunyai penjaga pintu dan berjalan dalam masa yang singkat:

bagaimana dengan iframes itu?
<span><span><?php </span></span><span><span>//the whitelist we control
</span></span><span><span>$whitelist = array(
</span></span><span>	<span>'trusted.tld',
</span></span><span>	<span>'trusted.domain.tld'
</span></span><span><span>);
</span></span><span>
</span><span><span>//the referer
</span></span><span><span>$referer = parse_url($_SERVER["HTTP_REFERER"], PHP_URL_HOST);
</span></span><span>
</span><span><span>//the gatekeeper
</span></span><span><span>if ( !in_array($referer, $whitelist) )
</span></span><span><span>{
</span></span><span>	<span>throw new GateKeeperDoesNotApprove;
</span></span><span><span>}</span></span></span>

Seperti yang disebutkan, bergantung kepada rujukan itu tidak selalu menjadi idea yang baik. Ia bukan sahaja data dari manusia yang tidak boleh dipercayai, ia juga tidak memberi kita petunjuk sama ada kita berada dalam iframe atau tidak. Hanya ada cara untuk mengetahui.

Kami boleh menyewa seorang hitman untuk membantu penjaga pintu kami. Hitman kami akan dihantar kepada manusia yang kelihatan mencurigakan (mis. Orang -orang yang mempunyai rujukan yang tidak dipercayai). The hitman akan menggunakan JS sebagai senjatanya:

# Turn mod_rewrite on
RewriteEngine On

# if it is not trusted.domain.tld block it
RewriteCond %{HTTP_REFERER} !^trusted\.domain\.tld$ [NC]
RewriteCond %{HTTP_REFERER} !^trusted\.tld$ [NC]
RewriteRule ^ - [F]

Sayangnya, seseorang yang tiba dari domain yang tidak dipercayai mempunyai rujukan yang sama seperti orang lain yang mengakses kami menggunakan iframe dari domain yang tidak dipercayai itu. Aset, bagaimanapun, akan mempunyai rujukan yang ditetapkan ke domain kami (walaupun dalam situasi iframe) - jadi menghantar hitman di sini adalah berlebihan. Cukup menafikan akses sudah cukup - atau anda boleh menghantar imej anak kucing rawak.

Itulah sebabnya kami mempunyai pemeriksaan hitman kami jika kami berada dalam iframe. Jika ya, kami telah membunuh sasaran kami:

#specify the files to guard, block all the assets
<files>
  #block everyone
  Deny from all
  #allow trusted ones
  Allow from trusted.tld trusted.domain.tld
</files>

Satu -satunya perkara yang perlu kita tahu ialah mempunyai penjaga pintu kami menambah hitman ke muatan yang dihantar kepada pelanggan. Mudah!

location / {
  valid_referers trusted.tld trusted.domain.tld;
  if ($invalid_referer) {
    return   444;
  }
}

Kod ini bukan bukti pengeluaran. Ia berfungsi sebagai contoh.

bagaimana dengan keselamatan sebenar?

Penyelesaian yang dibekalkan di sini akan menjaga anda terhadap kebanyakan raksasa boogie. Tetapi kedua -dua penyelesaian bukan bukti bodoh. Yang pertama menggunakan data dari klien, yang kedua adalah JavaScript yang dijalankan oleh klien.

Cara yang selamat adalah menggunakan penjaga pintu berasaskan token. OAuth mungkin lelaki yang anda mahukan untuk pekerjaan di sini, tetapi itu adalah di luar skop artikel ini.

Soalan Lazim (Soalan Lazim) mengenai Kaedah Sekatan Akses Aset

Apakah kaedah sekatan akses aset yang berbeza? Kaedah ini termasuk penyekatan IP, yang melibatkan menyekat akses dari alamat IP tertentu; Geo-blocking, yang menyekat akses berdasarkan lokasi geografi; dan menyekat ejen pengguna, yang menghalang akses daripada pelayar atau peranti tertentu. Kaedah lain termasuk penyekatan perujuk HTTP, yang menyekat akses berdasarkan laman web rujukan, dan perlindungan kata laluan, yang memerlukan pengguna memasukkan kata laluan untuk mendapatkan akses.

Penyekatan IP adalah kaedah yang digunakan untuk mengelakkan alamat IP tertentu daripada mengakses aset digital. Ini dilakukan dengan menambahkan alamat IP ke 'senarai hitam' dalam fail konfigurasi pelayan. Sebarang permintaan yang datang dari alamat IP ini akan dinafikan, dengan berkesan menyekat mereka daripada mengakses aset. Hadkan akses kepada aset digital berdasarkan lokasi geografi. Ini sering digunakan untuk mematuhi perjanjian pelesenan serantau atau untuk mengelakkan akses dari kawasan yang dikenali untuk serangan siber. Geo-blocking berfungsi dengan menentukan lokasi pengguna berdasarkan alamat IP mereka.

Bagaimanakah penyekatan ejen pengguna boleh digunakan dalam sekatan akses aset?

Penyekatan agen pengguna adalah kaedah yang digunakan untuk mencegah penyemak imbas atau peranti tertentu daripada mengakses aset digital. Ini dilakukan dengan mengenal pasti rentetan ejen pengguna, yang dihantar oleh penyemak imbas atau peranti semasa membuat permintaan ke pelayan. Sekiranya rentetan ejen pengguna sepadan dengan satu pada 'senarai hitam' pelayan, permintaan itu akan dinafikan. Kaedah yang digunakan untuk menyekat akses berdasarkan laman web merujuk. Ini dilakukan dengan memeriksa header perujuk HTTP, yang mengandungi URL laman web yang diminta oleh permintaan itu. Sekiranya perujuk berada di 'senarai hitam' pelayan, permintaan akan dinafikan.

Bagaimana perlindungan kata laluan berfungsi dalam sekatan akses aset? aset digital dengan menghendaki pengguna memasukkan kata laluan. Ini sering digunakan untuk aset peribadi atau sensitif. Pelayan akan meminta pengguna untuk kata laluan apabila mereka cuba mengakses aset, dan hanya mereka yang memasuki kata laluan yang betul akan diberikan akses. 🎜> Ya, kaedah sekatan akses aset berganda boleh digunakan bersama -sama untuk menyediakan tahap keselamatan yang lebih tinggi. Sebagai contoh, anda boleh menggunakan penyekatan IP untuk mengelakkan akses dari alamat IP tertentu, dan kemudian gunakan perlindungan kata laluan untuk menyekat akses kepada pengguna yang diberi kuasa sahaja. >

Melaksanakan kaedah sekatan akses aset di laman web anda biasanya melibatkan mengubah suai fail konfigurasi pelayan anda. Proses yang tepat akan bergantung pada perisian pelayan yang anda gunakan dan kaedah sekatan khusus yang anda ingin laksanakan. Boleh memberikan tahap keselamatan yang tinggi, mereka juga berpotensi menghalang pengguna yang sah. Sebagai contoh, penyekatan IP boleh menghalang pengguna yang menggunakan VPN atau proksi, dan geo-blocking boleh menghalang pengguna yang melakukan perjalanan ke luar negara. Oleh itu, penting untuk mempertimbangkan dengan teliti kesan yang berpotensi kepada pengguna sebelum melaksanakan kaedah ini. Rangkaian (CDN) untuk mengedarkan aset anda, menggunakan firewall untuk melindungi pelayan anda, atau menggunakan plugin keselamatan atau perkhidmatan yang menyediakan pelbagai ciri keselamatan. Alternatif ini dapat memberikan tahap keselamatan yang tinggi tanpa potensi kelemahan kaedah sekatan akses aset.

Atas ialah kandungan terperinci Kaedah sekatan akses aset - Blok pelawat yang tidak diingini. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Apakah perbezaan antara masa tamat sesi mutlak dan terbiar?Apakah perbezaan antara masa tamat sesi mutlak dan terbiar?May 03, 2025 am 12:21 AM

Timeout sesi mutlak bermula pada masa penciptaan sesi, sementara waktu tamat sesi terbiar bermula pada masa operasi pengguna. Tamat masa sesi mutlak sesuai untuk senario di mana kawalan ketat kitaran hayat sesi diperlukan, seperti aplikasi kewangan; Timeout sesi terbiar sesuai untuk aplikasi yang mahu pengguna menyimpan sesi mereka aktif untuk masa yang lama, seperti media sosial.

Apakah langkah yang akan anda ambil jika sesi tidak berfungsi di pelayan anda?Apakah langkah yang akan anda ambil jika sesi tidak berfungsi di pelayan anda?May 03, 2025 am 12:19 AM

Kegagalan sesi pelayan boleh diselesaikan dengan mengikuti langkah -langkah: 1. Semak konfigurasi pelayan untuk memastikan sesi ditetapkan dengan betul. 2. Sahkan kuki klien, sahkan bahawa penyemak imbas menyokongnya dan hantar dengan betul. 3. Periksa perkhidmatan penyimpanan sesi, seperti Redis, untuk memastikan bahawa mereka beroperasi secara normal. 4. Semak kod aplikasi untuk memastikan logik sesi yang betul. Melalui langkah -langkah ini, masalah perbualan dapat didiagnosis dengan berkesan dan diperbaiki dan pengalaman pengguna dapat diperbaiki.

Apakah kepentingan fungsi session_start ()?Apakah kepentingan fungsi session_start ()?May 03, 2025 am 12:18 AM

session_start () iscrucialinphpformanaginguserSessions.1) itinitiatesanewsessionifnoneexists, 2) resumeSanexistingsession, dan3) setSasessionCookieforcontinuityAcrossrequests, enableingApplicationeUseUshenticationandPersonalConizedConizedContentContentContentContentContentContentContentContentContentContentContentC.

Apakah kepentingan menetapkan bendera httponly untuk cookies sesi?Apakah kepentingan menetapkan bendera httponly untuk cookies sesi?May 03, 2025 am 12:10 AM

Menetapkan bendera httponly adalah penting untuk cookies sesi kerana ia dapat mencegah serangan XSS dengan berkesan dan melindungi maklumat sesi pengguna. Khususnya, 1) bendera httponly menghalang JavaScript daripada mengakses kuki, 2) bendera boleh ditetapkan melalui setcookies dan make_response dalam php dan flask, 3) walaupun ia tidak dapat dicegah dari semua serangan, ia harus menjadi sebahagian daripada dasar keselamatan keseluruhan.

Masalah apa yang diselesaikan oleh sesi php dalam pembangunan web?Masalah apa yang diselesaikan oleh sesi php dalam pembangunan web?May 03, 2025 am 12:02 AM

PhpsSesionssolveThublemofMainTainStateAsmultipHttprequestsByStoringDataontheserverArverArsociatingWithauniquesession.1) merekaSTOREdataServer-sisi, biasanya

Data apa yang boleh disimpan dalam sesi PHP?Data apa yang boleh disimpan dalam sesi PHP?May 02, 2025 am 12:17 AM

Phpsessionscanstorestrings, nombor, tatasusunan, andobjects.1.strings: textdatalikeusernames.2.numbers: integersorfloatsforcounters.3.Arrays: ListsLikeshoppingCarts.4.Objects: complextructureSturesthatareserialized.

Bagaimana anda memulakan sesi PHP?Bagaimana anda memulakan sesi PHP?May 02, 2025 am 12:16 AM

Tostartaphpsession, usesession_start () atthescript'sbeginning.1) placeitbeforeanyoutputtosetthesessioncookie.2) usesessionsforusererdatalikeloginstatusorshoppingcarts.3)

Apakah regenerasi sesi, dan bagaimanakah ia meningkatkan keselamatan?Apakah regenerasi sesi, dan bagaimanakah ia meningkatkan keselamatan?May 02, 2025 am 12:15 AM

Penjanaan semula sesi merujuk kepada menjana ID sesi baru dan membatalkan ID lama apabila pengguna melakukan operasi sensitif dalam kes serangan tetap sesi. Langkah-langkah pelaksanaan termasuk: 1. Mengesan Operasi Sensitif, 2. Menjana ID Sesi Baru, 3. Memusnahkan ID Sesi Lama, 4. Kemas kini maklumat sesi pengguna.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).