Rumah > pembangunan bahagian belakang > tutorial php > Kaedah sekatan akses aset - Blok pelawat yang tidak diingini

Kaedah sekatan akses aset - Blok pelawat yang tidak diingini

尊渡假赌尊渡假赌尊渡假赌
Lepaskan: 2025-02-20 10:23:10
asal
892 orang telah melayarinya

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]
Salin selepas log masuk
Salin selepas log masuk
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>
Salin selepas log masuk
Salin selepas log masuk
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;
  }
}
Salin selepas log masuk
Salin selepas log masuk

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>
Salin selepas log masuk

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]
Salin selepas log masuk
Salin selepas log masuk

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>
Salin selepas log masuk
Salin selepas log masuk

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;
  }
}
Salin selepas log masuk
Salin selepas log masuk

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 Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan