


Pengekodan Selamat PHP: Jangan Biarkan Kod Terlepas
Saya sedang berbual santai dengan seorang rakan pada hari lain yang merupakan peneraju teknologi pada permulaan yang berjaya, dan semasa kami menonton perlawanan akhir Olimpik bagi polo air wanita, kami mula bercakap tentang kegagalan PHP yang saya temui di alam liar ?. Dia sebagai peneraju teknologi dan saya seorang pertengahan, saya menjangkakan dia sudah pun mengatasi kegagalan ini dalam kesibukan sehariannya, tetapi... sungguh mengejutkan walaupun kedengarannya dia tidak melakukannya.
"Gagal" yang saya maksudkan, dan anda mungkin sudah menekanya, tidak lain adalah perbandingan longgar PHP. Sekarang, untuk bersikap adil, saya tidak akan benar-benar menyebutnya sebagai kegagalan, tetapi ciri, tetapi penggunaannya boleh menjadi sangat berbahaya sehingga, dalam erti kata itu, ia adalah gagal! Jom dapatkan nerd kami!
Jadual kandungan
- Perbandingan Longgar PHP
-
Senario Rentan
- Sistem log masuk yang tidak selamat
- Keizinan yang tidak selamat dengan sentuhan
- Mengurangkan pepijat perbandingan yang longgar
- Kesimpulan
- Tunjukkan cinta @Sudorealm
Perbandingan Longgar PHP
Perbandingan longgar dalam PHP ialah apabila anda membandingkan dua nilai menggunakan operator ==, yang tidak menyemak jenis data pembolehubah yang dibandingkan. PHP akan cuba menukar nilai kepada jenis biasa sebelum membandingkannya.
if ('string' == true){ echo 'Weedle I choose you'; } else{ echo 'Charizard I choose you'; }
Percaya atau tidak, kami akan menghantar Weedle 3 peringkat ke dalam pertempuran di sini, sementara Charizard kami masih tidak digunakan. KENAPA? Nah, dalam contoh di atas, PHP menukar rentetan 'rentetan' kepada true sebelum membandingkannya dengan true, membawa kepada perbandingan sebenar ?. Tingkah laku ini, walaupun kadangkala berguna, boleh berbahaya jika tidak difahami dan dikawal dengan betul.
Semak Jadual Perbandingan Longgar ini daripada Dokumen PHP untuk mendapatkan maklumat lanjut
Mungkin nampaknya tidak seberapa pada mulanya, tetapi percayalah kepada saya kepada pembangun terlatih, helah ini entah dari mana mungkin akan menggigil ke tulang mereka dan menghantar mereka ke pemfaktoran semula kod pengeluaran.
Senario Terdedah
Dalam bahagian artikel ini, saya akan cuba memberikan beberapa blok kod yang apabila ditemui di alam liar boleh memberi anda ganjaran hadiah pepijat yang hebat, juga jika anda menjumpai sesuatu yang serupa dengan pangkalan kod anda... ubahnya ?
Sistem log masuk yang tidak selamat
Dalam coretan di bawah anda melihat logik sistem log masuk yang sangat asas.
$username = $_POST['username']; $password = $_POST['password']; if ($username == 'admin' && $password == '12345') { // Grant access }
Katakanlah penggodam yang licik mengganggu data yang dihantar dan menjadikannya: $_POST['nama pengguna'] = benar dan $_POST['kata laluan'] = benar yang akan mengakibatkan:
$username = $_POST['username']; $password = $_POST['password']; if (true == 'admin' && true == '12345') { // Grant access } # Now that hacker has been granted access to our App... Good for him, not for us
Jika anda tertanya-tanya bagaimana penggodam boleh mengganggu data kami, saya ada dua jawapan untuk anda dari kepala saya:
- Permintaan tersuai dengan keriting.
- Burpsuite
Seterusnya.
Keizinan yang tidak selamat dengan sentuhan
Di sinilah saya mempamerkan masalah dengan PHP yang mungkin mengejutkan anda.
$user_role = $_POST['user_role']; // Example: 'admin', 'editor', 'viewer' // Authorization check using a switch statement switch ($user_role) { case 'crazyDifficultAdminRoleNooneWouldEverGuess': // Admin privileges echo "Access granted: Super Admin level"; break; case 'editor': // Editor privileges echo "Access granted: Editor level"; break; case 'viewer': // Viewer privileges echo "Access granted: Viewer level"; break; default: // No access echo "Access denied: Invalid role"; break; }
Kod ini sudah pun terdedah kepada gangguan data kerana penggodam boleh meneka peranan dan menukarnya untuk mengakses tahap kebenaran yang berbeza.
Kami mungkin berasa agak selamat, kerana mereka tidak akan dapat meneka nama peranan Super Admin kami.
Tetapi bagaimana jika mereka tidak perlu meneka sama sekali?☠️
Tahukah anda bahawa Switch Case menggunakan perbandingan yang longgar? Ha! anda mungkin terkejut sekarang!
Ini bermakna jika Penggodam menambah $_POST['user_role'] = benar maka mereka akan mengakses kes pertama kami dalam pernyataan suis kami tidak kira nilainya. Bukankah itu sakit di bahagian bawah? Baca dokumen.
Mengurangkan pepijat perbandingan yang longgar
Mengurangkan pepijat perbandingan yang longgar adalah penting dalam memastikan keselamatan dan kebolehpercayaan aplikasi PHP anda. Penggunaan perbandingan ketat === dan ungkapan padanan, dalam PHP versi 8.0+, memainkan peranan penting dalam proses ini. Tidak seperti operator perbandingan longgar ==, yang boleh membawa kepada keputusan yang tidak dijangka dan berpotensi berbahaya disebabkan oleh juggling jenis PHP, perbandingan yang ketat memastikan kedua-dua nilai dan jenis pembolehubah disemak. Ini menghapuskan kelemahan seperti paksaan jenis yang tidak disengajakan, yang boleh dieksploitasi untuk memintas pemeriksaan keselamatan.
Berikut ialah penyelesaian kepada pepijat kebenaran Tidak selamat menggunakan ungkapan padanan:
$user_role = $_POST['role']; $response = match ($user_role) { 'crazyDifficultAdminRoleNooneWouldEverGuess' => "Access granted: Super Admin level", 'editor' => "Access granted: Editor level", 'viewer' => "Access granted: Viewer level", default => "Access denied: Invalid role", }; echo $response; # This outputs: 'Access denied: Invalid role' when role is set to true
Kesimpulan
Tahukah anda tentang bahaya perbandingan longgar dan juggling jenis dalam PHP? Jika anda tidak melakukannya, kini anda lakukan. Biarkan artikel ringkas ini menjadi peringatan untuk sentiasa membaca dokumentasi dan membangunkan pemahaman yang kukuh tentang semua yang anda gunakan semasa pengaturcaraan. Rasa ingin tahu adalah penting apabila anda berusaha untuk menjadi yang terbaik dalam apa jua perkara yang anda lakukan!
Dengan mengamalkan disiplin === yang ketat dan ketepatan padanan yang tajam, anda boleh mengekalkan kod PHP anda pada tali yang ketat, memastikan ia berkelakuan tepat seperti yang anda jangkakan. Ingat, sedikit ketat sekarang boleh menjimatkan banyak sakit kepala nanti. Biarkan ini menjadi dorongan suka bermain bahawa tidak kira di mana anda berada dalam perjalanan pengekodan anda, sentiasa ada sesuatu yang baharu untuk dipelajari. Jadi, pastikan mata itu terbuka, kekal ingin tahu, dan jangan biarkan perbandingan yang longgar itu terlepas dari internet! ?
Tentang Saya
Anda boleh mengetahui lebih lanjut tentang saya dalam ruang blog peribadi saya di sudorealm.com.
Jika anda suka gaya penulisan saya dan kandungan saya, jangan teragak-agak untuk menekan butang ikut itu, dan perkara ajaib akan berlaku! ??
Atas ialah kandungan terperinci Pengekodan Selamat PHP: Jangan Biarkan Kod Terlepas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Dalam php, kata laluan_hash dan kata laluan 1) password_hash menjana hash yang mengandungi nilai garam untuk meningkatkan keselamatan. 2) Kata Laluan_verify Sahkan kata laluan dan pastikan keselamatan dengan membandingkan nilai hash. 3) MD5 dan SHA1 terdedah dan kekurangan nilai garam, dan tidak sesuai untuk keselamatan kata laluan moden.

Jenis PHP meminta untuk meningkatkan kualiti kod dan kebolehbacaan. 1) Petua Jenis Skalar: Oleh kerana Php7.0, jenis data asas dibenarkan untuk ditentukan dalam parameter fungsi, seperti INT, Float, dan lain -lain. 2) Return Type Prompt: Pastikan konsistensi jenis nilai pulangan fungsi. 3) Jenis Kesatuan Prompt: Oleh kerana Php8.0, pelbagai jenis dibenarkan untuk ditentukan dalam parameter fungsi atau nilai pulangan. 4) Prompt jenis yang boleh dibatalkan: membolehkan untuk memasukkan nilai null dan mengendalikan fungsi yang boleh mengembalikan nilai null.

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

Menggunakan penyataan preprocessing dan PDO dalam PHP secara berkesan dapat mencegah serangan suntikan SQL. 1) Gunakan PDO untuk menyambung ke pangkalan data dan tetapkan mod ralat. 2) Buat kenyataan pra -proses melalui kaedah menyediakan dan lulus data menggunakan ruang letak dan laksanakan kaedah. 3) Hasil pertanyaan proses dan pastikan keselamatan dan prestasi kod.

PHP dan Python mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keutamaan peribadi. 1.PHP sesuai untuk pembangunan pesat dan penyelenggaraan aplikasi web berskala besar. 2. Python menguasai bidang sains data dan pembelajaran mesin.

PHP menggunakan sambungan MySQLI dan PDO untuk berinteraksi dalam operasi pangkalan data dan pemprosesan logik sisi pelayan, dan memproses logik sisi pelayan melalui fungsi seperti pengurusan sesi. 1) Gunakan MySQLI atau PDO untuk menyambung ke pangkalan data dan laksanakan pertanyaan SQL. 2) Mengendalikan permintaan HTTP dan status pengguna melalui pengurusan sesi dan fungsi lain. 3) Gunakan urus niaga untuk memastikan atomik operasi pangkalan data. 4) Mencegah suntikan SQL, gunakan pengendalian pengecualian dan sambungan penutup untuk debugging. 5) Mengoptimumkan prestasi melalui pengindeksan dan cache, tulis kod yang sangat mudah dibaca dan lakukan pengendalian ralat.

PHP digunakan untuk membina laman web dinamik, dan fungsi terasnya termasuk: 1. Menjana kandungan dinamik dan menghasilkan laman web secara real time dengan menyambung dengan pangkalan data; 2. Proses Interaksi Pengguna dan Penyerahan Bentuk, Sahkan Input dan Menanggapi Operasi; 3. Menguruskan sesi dan pengesahan pengguna untuk memberikan pengalaman yang diperibadikan; 4. Mengoptimumkan prestasi dan ikuti amalan terbaik untuk meningkatkan kecekapan dan keselamatan laman web.

PHP sesuai untuk pembangunan web dan prototaip pesat, dan Python sesuai untuk sains data dan pembelajaran mesin. 1.Php digunakan untuk pembangunan web dinamik, dengan sintaks mudah dan sesuai untuk pembangunan pesat. 2. Python mempunyai sintaks ringkas, sesuai untuk pelbagai bidang, dan mempunyai ekosistem perpustakaan yang kuat.
