Jadual Kandungan
2. Dengan mengandaikan parameter selalu ada
3. Menggunakan $_GET untuk data sensitif atau besar
4. terlalu banyak $_GET untuk pengurusan negeri
5. Parameter Dinamik Pengekodan URL
6. Mengekspos logik dalaman atau ID
7. Membenarkan penapisan atau penyortiran yang tidak terhad
Ringkasan Amalan Terbaik
Rumah pembangunan bahagian belakang tutorial php 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
PHP Superglobal - $_GET

Sentiasa mengesahkan dan membersihkan $ _get input menggunakan filter_input () atau filter_var () dan melarikan diri output dengan htmlspecialchars () untuk mencegah XSS. 2. Periksa jika parameter wujud menggunakan isset () atau pengendali comel null (??) untuk mengelakkan amaran. 3. Jangan lulus data sensitif atau besar melalui rentetan pertanyaan; Gunakan $ _POST atau sesi sebaliknya. 4. Elakkan terlalu banyak $ _get untuk pengurusan negeri; Gunakan sesi atau pangkalan data untuk menyimpan keadaan kompleks. 5. Sentiasa url-encode parameter dinamik dengan urlencode () apabila menjana pautan. 6. Elakkan mendedahkan logik dalaman atau ID; Gunakan UUIDs atau Obfuscation dan menguatkuasakan kawalan akses. 7. Whitelist membenarkan nilai untuk menyusun dan menapis untuk mencegah suntikan dan penyalahgunaan. Merawat semua data $ _get sebagai tidak dipercayai dan memohon pengesahan yang konsisten memastikan keselamatan, penyelenggaraan, dan pengalaman pengguna yang lebih baik.

Perangkap biasa dan anti-corak ketika bekerja dengan superglobal $ _get

Bekerja dengan superglobal $_GET dalam PHP adalah salah satu cara yang paling biasa untuk mendapatkan data dari rentetan pertanyaan URL. Walaupun mudah digunakan, pengendalian yang tidak betul boleh membawa kepada kelemahan keselamatan, pepijat, dan pengalaman pengguna yang lemah. Berikut adalah perangkap biasa dan pemaju anti-corak harus mengelakkan apabila menggunakan $_GET .

Perangkap biasa dan anti-corak ketika bekerja dengan superglobal $ _get

1. Tidak mengesahkan atau membasmi input

Salah satu kesilapan yang paling kerap adalah menggunakan nilai $_GET tanpa pengesahan atau sanitisasi.

 // ❌ anti-corak
Echo "Hello,". $ _Get ['name'];

// ✅ Pendekatan yang lebih baik
$ name = filter_input (input_get, 'name', filter_sanitize_string);
jika ($ nama) {
    Echo "Hello,". htmlspecialchars ($ nama);
}

Mengapa ia berbahaya:
Input yang tidak berasaskan boleh menyebabkan serangan skrip lintas tapak (XSS) . Sentiasa menganggap $_GET data tidak dipercayai.

Perangkap biasa dan anti-corak ketika bekerja dengan superglobal $ _get

Amalan Terbaik:

  • Gunakan filter_input() atau filter_var() untuk pengesahan.
  • Escape Output dengan htmlspecialchars() apabila memaparkan dalam html.
  • Tentukan jenis data yang dijangkakan (contohnya, integer, e -mel) dan sahkan dengan sewajarnya.

2. Dengan mengandaikan parameter selalu ada

Mengakses kekunci $_GET tanpa memeriksa sama ada ia ditetapkan boleh menyebabkan amaran PHP.

Perangkap biasa dan anti-corak ketika bekerja dengan superglobal $ _get
 // ❌ anti-corak
$ Page = $ _get ['Page'];

// ✅ Pendekatan yang betul
$ Page = $ _get ['Page'] ?? 1; // lalai hingga 1
// atau
$ page = isset ($ _ get ['page'])? (int) $ _ get ['Page']: 1;

Petua: Gunakan pengendali coalescing null ( ?? ) untuk sandaran bersih. Sentiasa berikan lalai untuk parameter pilihan.


3. Menggunakan $_GET untuk data sensitif atau besar

Lulus data sensitif (seperti kata laluan, token, atau maklumat peribadi) melalui rentetan pertanyaan adalah kesilapan yang serius.

 // ❌ Jangan pernah melakukan ini
// https://example.com/delete?user_id=5&token=abc123

// ✅ Gunakan permintaan dan sesi pos

Kenapa buruk:

  • Rentetan pertanyaan muncul dalam log pelayan, sejarah penyemak imbas, dan tajuk perujuk.
  • URL boleh dikongsi secara tidak sengaja.
  • Panjang terhad (sekatan panjang URL berbeza -beza mengikut penyemak imbas/pelayan).

Garis panduan: Gunakan $_POST atau sesi untuk muatan sensitif atau besar.


4. terlalu banyak $_GET untuk pengurusan negeri

Bergantung pada rentetan pertanyaan yang panjang atau kompleks untuk menguruskan keadaan aplikasi menjadikan URL tidak berat sebelah dan rapuh.

 // ❌ overcompicate
//? Langkah = 3 & mod = edit & form = profil & tab = pemberitahuan & pengguna = 123 & lang = en & tema = gelap

Masalah:

  • Sukar untuk mengekalkan dan debug.
  • Pecah mudah jika parameter hilang atau cacat.
  • UX dan SEO yang lemah.

Alternatif yang lebih baik:

  • Gunakan sesi untuk menyimpan keadaan pelbagai langkah.
  • Simpan konfigurasi dalam pangkalan data atau keutamaan pengguna.
  • Pastikan rentetan pertanyaan minimum dan semantik (misalnya , ?page=2 , ?search=php ).

5. Parameter Dinamik Pengekodan URL

Apabila menjana URL dengan nilai $_GET dinamik, gagal menyandikannya boleh memecahkan pautan atau memperkenalkan isu keselamatan.

 // ❌ Berbahaya
echo "<a href = &#39;search.php? q = $ query&#39;> carian </a>";

// ✅ Selamat
echo &#39;<a href = "search.php? q =&#39;. urlencode ($ query). &#39;"> cari </a>&#39;;

Sentiasa gunakan urlencode() apabila memasukkan data pengguna ke dalam URL.


6. Mengekspos logik dalaman atau ID

Menggunakan ID pangkalan data mentah atau pengenal dalaman dalam URL boleh mendedahkan struktur sistem anda.

 // ❌ diramal dan bocor
//? id = 12345

Pendekatan yang lebih baik:

  • Gunakan UUIDs atau ID Obfuscated.
  • Melaksanakan kawalan akses - hanya kerana ID berada di URL tidak bermakna pengguna harus melihatnya.
  • Mengesahkan kebenaran pengguna pada setiap permintaan.

7. Membenarkan penapisan atau penyortiran yang tidak terhad

Membiarkan Parameter $_GET secara langsung mengawal pertanyaan SQL tanpa senarai putih berisiko.

 // ❌ terdedah kepada suntikan atau penyalahgunaan
$ sort = $ _get [&#39;sort&#39;];
$ query = "Pilih * dari pesanan pengguna dengan $ sort";

// ✅ Gunakan senarai putih
$ dibenarkan_sorts = [&#39;nama&#39;, &#39;e -mel&#39;, &#39;created_at&#39;];
$ sort = in_array ($ _ get [&#39;sort&#39;], $ dibenarkan_sorts)? $ _Get [&#39;sort&#39;]: &#39;name&#39;;

Sentiasa mengesahkan bahagian pertanyaan dinamik terhadap senarai nilai yang boleh diterima.


Ringkasan Amalan Terbaik

  • ✅ Sentiasa mengesahkan dan membersihkan $_GET input.
  • ✅ Gunakan filter_input() dan htmlspecialchars() .
  • ✅ Periksa sama ada kunci wujud menggunakan isset() atau ?? .
  • ✅ Elakkan data sensitif dalam rentetan pertanyaan.
  • ✅ Pastikan URL bersih dan bermakna.
  • ✅ Nilai encod url dimasukkan ke dalam pautan.
  • ✅ Melaksanakan kawalan akses walaupun untuk data "tidak kelihatan".
  • ✅ Whitelist membenarkan nilai untuk menyusun, penapisan, dll.

Menggunakan $_GET dengan selamat tidak sukar - ia hanya memerlukan merawat semua input pengguna sebagai tidak dipercayai dan menggunakan pengesahan yang konsisten. Tabiat ini melindungi aplikasi anda dan meningkatkan penyelenggaraan.

Atas ialah kandungan terperinci Perangkap biasa dan anti-corak ketika bekerja dengan superglobal $ _get. 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
1535
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;

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

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

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

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]

Taming URL Kompleksiti: Teknik Pengurusan Negeri Menggunakan $ _get Taming URL Kompleksiti: Teknik Pengurusan Negeri Menggunakan $ _get Aug 08, 2025 pm 06:30 PM

Gunakan $ \ _ getTocaptureFilterandNavigationStateFreurlQuerystring, enableBookmarkableLinksandPreservingContextacrossResResandNavigation.2.BuildurlSdynamiciSingAgiceLperfunctionThunctionThatMergesexisting,

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

See all articles