Jadual Kandungan
1. Sentiasa menganggap $_GET tidak dipercayai
2. Periksa sama ada parameter ada
3. Sanitize berdasarkan jenis data yang dijangkakan
Untuk bilangan bulat:
Untuk rentetan:
Untuk booleans:
4. Mengesahkan terhadap logik perniagaan
5. Melarikan diri dari output dengan betul
6. Gunakan https dan elakkan data sensitif dalam $_GET
7. Tetapkan had dan pendikit jika diperlukan
Aliran kerja ringkasan
Rumah pembangunan bahagian belakang tutorial php Dari input mentah ke data selamat: alur kerja muktamad untuk superglobal $ _get php

Dari input mentah ke data selamat: alur kerja muktamad untuk superglobal $ _get php

Aug 03, 2025 am 11:12 AM
PHP Superglobal - $_GET

Sentiasa merawat $ \ _ mendapatkan data sebagai tidak dipercayai; 2. Periksa sama ada parameter ada menggunakan isset () atau null coalescing; 3. SANITIZE Berdasarkan penapis jenis yang dijangkakan \ _validate \ _int untuk integer, htmlspecialchars () untuk rentetan, dan penapis \ _validate \ _boolean untuk boolean; 4. Mengesahkan terhadap logik perniagaan, seperti nilai yang dibenarkan atau kekangan pelbagai; 5. Melepaskan output dengan sewajarnya untuk konteks (misalnya, htmlspecialchars () untuk HTML, penyataan yang disediakan untuk SQL); 6. Jangan lulus data sensitif melalui $ \ _ mendapatkan dan sentiasa menggunakan https; 7. Melaksanakan pemeriksaan panjang input dan mengehadkan kadar untuk mencegah penyalahgunaan; Aliran kerja yang lengkap memastikan RAW $ \ _ mendapatkan input diubah menjadi data yang selamat dan boleh dipercayai dengan menapis input, melarikan diri output, dan mengandaikan semua input berpotensi berniat jahat.

Dari input mentah ke data selamat: aliran kerja muktamad untuk php \ s $ _get superglobal

Mengendalikan input pengguna dengan selamat adalah salah satu aspek yang paling kritikal dalam pembangunan web. Antara superglobal PHP, $_GET sering digunakan untuk mengambil data dari parameter URL -tetapi ia juga merupakan titik masuk yang sama untuk kelemahan keselamatan jika tidak dikendalikan dengan betul. Panduan ini membimbing anda melalui aliran kerja yang pasti dan nyata untuk mengubah input $_GET mentah ke dalam data yang selamat dan boleh digunakan.

Dari input mentah ke data selamat: aliran kerja muktamad untuk superglobal $ _get php

1. Sentiasa menganggap $_GET tidak dipercayai

Peraturan pertama: Jangan merawat data $_GET sebagai selamat secara lalai . Sebarang nilai yang datang dari URL boleh dimanipulasi oleh pengguna atau penyerang. Walaupun pautan anda dihasilkan oleh pelayan, pengguna secara manual boleh mengubah rentetan pertanyaan secara manual.

Contohnya:

Dari input mentah ke data selamat: aliran kerja muktamad untuk superglobal $ _get php
 https://example.com/user.php?id=5

Seseorang boleh mengubahnya menjadi:

 https://example.com/user.php?id=999 'atau' 1 '=' 1

Inilah sebabnya mengapa pengesahan dan sanitisasi tidak boleh dirunding.

Dari input mentah ke data selamat: aliran kerja muktamad untuk superglobal $ _get php

2. Periksa sama ada parameter ada

Sebelum mengakses parameter $_GET , selalu sahkan ia wujud untuk mengelakkan notis indeks yang tidak ditentukan.

 jika (isset ($ _ get ['id'])) {
    $ raw_id = $ _get ['id'];
} else {
    // Mengendalikan parameter yang hilang
    mati ('id diperlukan');
}

Sebagai alternatif, gunakan NULL Coalescing untuk sintaks bersih:

 $ raw_id = $ _get ['id'] ?? null;

Jika $raw_id adalah null , anda boleh mengarahkan, tunjukkan ralat, atau memohon lalai.


3. Sanitize berdasarkan jenis data yang dijangkakan

Sebaik sahaja anda tahu parameter wujud, sanitisasi mengikut jenis data yang anda harapkan.

Untuk bilangan bulat:

Gunakan filter_var() dengan FILTER_SANITIZE_NUMBER_INT . Tetapi lebih baik lagi, sahkan dengan FILTER_VALIDATE_INT jika anda memerlukan pemeriksaan jenis ketat.

 $ id = filter_var ($ _ get ['id'], filter_validate_int);

jika ($ id === palsu) {
    mati ('id tidak sah');
}

Nota: FILTER_SANITIZE_NUMBER_INT tidak menjamin integer -ia menghilangkan beberapa chars yang tidak sah tetapi meninggalkan rentetan seperti 123abc sebagai 123 . Gunakan pengesahan apabila jenis integriti perkara.

Untuk rentetan:

Trim Whitespace dan jalur atau melarikan diri dari watak berbahaya bergantung pada konteks.

 $ carian = trim ($ _ get ['q'] ?? '');
$ search = filter_var ($ carian, filter_sanitize_string, filter_flag_strip_low);

Elakkan FILTER_SANITIZE_STRING dalam php 8.1 (tidak ditetapkan), jadi pertimbangkan pembersihan manual:

 $ carian = htmlspecialChars (trim ($ _ get ['q'] ?? ''), ent_quotes, 'utf-8');

Ini menyediakan rentetan untuk output dalam HTML, mencegah XSS.

Untuk booleans:

 $ aktif = filter_var ($ _ get ['active'] ?? '', filter_validate_boolean);

Pulangan true untuk "1", "benar", "pada", dll.


4. Mengesahkan terhadap logik perniagaan

Sanitizing tidak mencukupi. Anda mesti mengesahkan sama ada data masuk akal dalam konteks.

Sebagai contoh, jika mengharapkan nombor halaman:

 $ page = filter_var ($ _ get ['page'] ?? 1, filter_validate_int, [
    'Options' => ['default' => 1, 'min_range' => 1, 'max_range' => 1000]
]);

Atau mengesahkan nilai yang dibenarkan:

 $ sort = $ _get ['sort'] ?? 'Nama';
$ dibenarkan_sorts = ['nama', 'tarikh', 'harga'];
$ sort = in_array ($ sort, $ dibenarkan_sorts)? $ sort: 'nama';

5. Melarikan diri dari output dengan betul

Walaupun selepas sanitasi input, output melarikan diri berdasarkan konteks:

  • Output HTML : htmlspecialchars()
  • Pertanyaan SQL : Gunakan Kenyataan yang Disediakan (tidak pernah bersekutu)
  • Javascript/json : json_encode() melarikan diri yang betul
  • URL : urlencode() untuk parameter

Contoh dengan HTML:

 echo &#39;<h1> Mencari:&#39;. htmlspecialchars ($ carian, ent_quotes, &#39;utf-8&#39;). &#39;</h1>&#39;;

Contoh dengan PDO (SQL):

 $ STMT = $ pdo-> Sediakan ("Pilih * dari pengguna di mana id =?");
$ stmt-> Execute ([$ id]);

6. Gunakan https dan elakkan data sensitif dalam $_GET

Jangan lulus data sensitif (token, kata laluan, PII) melalui rentetan pertanyaan. Mereka mendapat log masuk dalam log pelayan, sejarah penyemak imbas, dan tajuk perujuk.

Gunakan $_POST atau sesi sebaliknya.

Juga, pastikan laman web anda menggunakan HTTPS untuk menyulitkan data dalam transit.


7. Tetapkan had dan pendikit jika diperlukan

Untuk titik akhir awam menggunakan $_GET , pertimbangkan pembatasan kadar atau sekatan panjang input untuk mencegah penyalahgunaan.

 jika (strlen ($ _ get [&#39;q&#39;] ?? &#39;&#39;)> 100) {
    mati (&#39;pertanyaan carian terlalu lama&#39;);
}

Aliran kerja ringkasan

Inilah aliran kerja yang lengkap:

  • ✅ Semak jika ada kunci: $_GET['key'] ?? null
  • ✅ sanitize berdasarkan jenis (int, rentetan, bool)
  • ✅ Mengesahkan format yang dijangkakan dan peraturan perniagaan
  • ✅ melarikan diri sebelum output atau penggunaan dalam pertanyaan
  • ✅ Elakkan data sensitif dalam URL
  • ✅ Gunakan HTTPS dan memantau penyalahgunaan

Menggunakan $_GET tidak perlu berisiko. Dengan aliran kerja yang disiplin -menyampaikan, mengesahkan, dan melarikan diri -anda menjadikan input mentah, berbahaya ke dalam data yang selamat dan boleh dipercayai. Kuncinya tidak pernah melangkau langkah, walaupun untuk parameter "mudah".

Pada asasnya: Input Penapis, Escape Output, dan anggap setiap nilai $_GET keluar untuk mendapatkan anda.

Atas ialah kandungan terperinci Dari input mentah ke data selamat: alur kerja muktamad untuk superglobal $ _get php. 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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

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.

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

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1512
276
Degradasi anggun: Mengendalikan parameter $ _get yang hilang dan cacat dalam php Degradasi anggun: Mengendalikan parameter $ _get yang hilang dan cacat dalam php Aug 08, 2025 pm 06:38 PM

Untuk mengendalikan parameter $ _get yang hilang atau cacat secara berkesan dalam PHP, input mesti disahkan dan dibersihkan terlebih dahulu, dengan syarat nilai lalai, data yang diakses menggunakan kaedah selamat jenis, dan gagal dengan anggun dengan cara yang mesra pengguna. 1. Sentiasa periksa sama ada parameter wujud dan sahkan jenis dan format mereka, seperti menggunakan isset () dan filter_input () untuk memastikan bahawa ID adalah integer positif; 2. Tetapkan nilai lalai yang selamat untuk parameter pilihan, seperti medan paging atau sorting untuk mengelakkan kemalangan akibat hilang; 3. Elakkan akses langsung ke $ _get, bacaan selamat harus dilakukan dengan mengemas fungsi seperti get_param () dan get_int () digabungkan dengan pengendali gabungan null; 4. Apabila parameter tidak sah, API harus mengembalikan 400 kod status dan kesilapan JSON

Kesan $ _get pada strategi caching dan amalan terbaik SEO Kesan $ _get pada strategi caching dan amalan terbaik SEO Aug 05, 2025 am 07:46 AM

$ _GetParameterscanfragmentcacheentries, reducecachehitrates, dancausecdncachinginefficiencyesbecauseeachuniqueparametercombinationcreatesadistonturl;

Seni Coalescing Null: Memodenkan Pengambilan Data $ _get Anda Seni Coalescing Null: Memodenkan Pengambilan Data $ _get Anda Aug 07, 2025 pm 07:40 PM

Gunakan operator nullcoalescing (??) untuk memudahkan akses selamat ke parameter $ _get. 1. Gunakan ?? bukannya isset () memeriksa, seperti $ page = (int) ($ _ get ['page'] ?? 1); 2. Jenis penukaran, pembersihan rentetan dan pengesahan nilai masih diperlukan, seperti (int), trim (), in_array (), dan sebagainya; 3. Nilai lalai berbilang boleh ditetapkan dalam rantai, seperti $ query = $ _ get ['carian'] ?? $ _ get ['q'] ?? $ _ get ['s'] ?? '', tetapi terlalu banyak harus dielakkan; 4. Perhatikan bahawa fungsi itu tidak akan malas untuk menilai, dan ia perlu dilaksanakan ditangguhkan oleh pembolehubah atau penutupan; 5. Menggabungkan Keselamatan Jenis dan Pengesahan Input

Dari input mentah ke data selamat: alur kerja muktamad untuk superglobal $ _get php Dari input mentah ke data selamat: alur kerja muktamad untuk superglobal $ _get php Aug 03, 2025 am 11:12 AM

Sentiasa $ \ _ getDataAsUntrusted; 2.CheckifTheParameterExistSusingSet () ornullcoalescing; 3.SanitizeBasedExpectedType -useFil Ter \ _validate \ _intForIntegers, htmlspecialchars () forstrings, andfilter \ _validate \ _booleanforbooleans; 4.validateAgaStBusinessl

Membuka kunci struktur data kompleks dengan parameter $ _get berasaskan array Membuka kunci struktur data kompleks dengan parameter $ _get berasaskan array Aug 04, 2025 pm 02:22 PM

Phpautomaticallyparsesarray-likequerystringsintostructured $ _getArrays, enablingComplexDatahAndling.1.use? Colors [] = Red & Colors [] = BlueTogeTindExedArrays.2.use? User [name]

Dari $ _get untuk meminta objek: Bagaimana rangka moden Parameter URL Abstrak Dari $ _get untuk meminta objek: Bagaimana rangka moden Parameter URL Abstrak Aug 05, 2025 am 07:15 AM

ThheshiftFromRaw $ _getTostructureRequestobjectsimprovestestabilitybyallowingMockRequestsinsteadofrelyingonglobalstate.2.itenhancesconsistencyandsafetythroughbuiltbuilt-inmethodsfordefaults, sanitization, andvalidation.3

Perangkap biasa dan anti-corak ketika bekerja dengan superglobal $ _get Perangkap biasa dan anti-corak ketika bekerja dengan superglobal $ _get Aug 08, 2025 pm 06:26 PM

Swasta dan SwastaandeSanitize $ _GeInputusing filter_input () atau filter_var () andesescapeOutputWithHtmlSpecialChars () topvrachtxss.2.Check jika parameter -pouner. USS

Memanfaatkan `filter_input` untuk alternatif yang mantap dan selamat untuk mengarahkan akses $ _get Memanfaatkan `filter_input` untuk alternatif yang mantap dan selamat untuk mengarahkan akses $ _get Aug 04, 2025 am 11:59 AM

filter_input()issaferthandirect$_GETaccessbecauseitvalidatesandsanitizesinput,preventingtypejuggling,injectionattacks,andunexpectedbehavior.2.Itallowsspecifyingtheinputsource,type,andvalidationrules,returningfalseornullonfailureforsafererrorhandling.

See all articles