Rumah > pembangunan bahagian belakang > tutorial php > 7 Lebih banyak kesilapan yang biasanya dibuat oleh pemaju PHP

7 Lebih banyak kesilapan yang biasanya dibuat oleh pemaju PHP

Lisa Kudrow
Lepaskan: 2025-02-20 10:25:11
asal
923 orang telah melayarinya

3

Kembali pada akhir bulan Jun, Toptal, pasaran bebas, menerbitkan jawatan kira -kira 10 kesilapan yang paling biasa PHP pengaturcara. Senarai itu tidak lengkap, tetapi ia ditulis dengan baik dan menunjukkan beberapa perangkap yang sangat menarik yang perlu diperhatikan - walaupun saya tidak akan menyenaraikan kesilapan secara peribadi. 7 More Mistakes Commonly Made by PHP Developers Saya menggalakkan anda untuk memberikan bacaan menyeluruh - ia mempunyai beberapa maklumat yang benar -benar berharga yang harus anda ketahui - terutama lapan mata pertama. Beberapa hari yang lalu, Anna Filina berkembang dalam senarai dengan tujuh penyertaan baru. Walaupun kurang spesifik dan biasa, mata beliau masih membawa berat badan dan harus dipertimbangkan ketika berkembang.

Takeaways Key 7 Lebih banyak kesilapan yang biasanya dibuat oleh pemaju PHP

Elakkan menggunakan lanjutan MySQL yang tidak disengajakan untuk pangkalan data SQL, kerana ia tidak selamat, tidak boleh dipercayai, dan tidak mempunyai sokongan untuk SSL dan ciri MySQL moden. Sebaliknya, pilih alternatif seperti Mysqli atau PDO, yang menawarkan keselamatan yang lebih baik dan lebih banyak ciri.

Elakkan menindas kesilapan dalam kod anda dengan menggunakan pengendali @. Sebaliknya, biarkan kesilapan dilog dan alamatnya dengan menetapkan kod anda. Ini membantu mengekalkan integriti aplikasi anda dan menghalang isu -isu daripada diabaikan atau diabaikan.

Berhati-hati dengan mendedahkan terlalu banyak maklumat mengenai persediaan back-end anda, terutamanya jika anda menggunakan rangka kerja yang diketahui. Ini boleh mendedahkan permohonan anda kepada serangan yang berpotensi jika kelemahan keselamatan dalam rangka kerja itu ditemui. Juga, ingatlah untuk menghapuskan konfigurasi pembangunan apabila menolak pengeluaran untuk mengelakkan akses yang tidak dibenarkan.

  • 7 Lebih banyak kesilapan pemaju php sering membuat
  • Saya ditanya oleh seseorang dari Toptal untuk melihat senarai mereka dan berpotensi menyumbang, dan beberapa pengikut kami di rangkaian sosial menyatakan minat untuk melihat senarai itu juga, jadi saya ingin mengambil kesempatan ini untuk Tambahkan beberapa penyertaan saya sendiri ke senarai ini yang saya berulang kali perlu memberi amaran kepada ahli pasukan atau pengikut saya.
  • 1. Menggunakan Extension MySQL
Berita ini agak lama, tetapi bilangan pemaju yang tidak menyedari fakta itu membimbangkan. Apabila menggunakan pangkalan data SQL, khususnya MySQL, terlalu banyak pemaju masih memilih lanjutan MySQL. Pelanjutan MySQL secara rasmi ditutup. Ia tidak selamat, tidak boleh dipercayai, tidak menyokong SSL dan kehilangan beberapa ciri MySQL moden. Ia juga menghasilkan notis penolakan yang tidak memecahkan aplikasi anda, mereka hanya muncul di bahagian atas aplikasi anda. Hilariously, apa maksudnya adalah bahawa ia juga mungkin untuk hanya Google untuk semua laman web yang menggunakan persediaan tidak selamat ini dengan hanya mencari ini. Dunia yang menyakiti aplikasi tersebut terdedah kerana kekacauan ini mengejutkan.

Daripada menggunakan MySQL, pilih salah satu alternatif: MySQLI, atau PDO. Sebagai contoh, menggunakan mysqli sebaliknya hampir semudah menambah huruf "i" hingga akhir panggilan API:

<span>$c = mysql_connect("host", "user", "pass");
</span><span>mysql_select_db("database");
</span><span>$result = mysql_query("SELECT * FROM posts LIMIT 1");
</span><span>$row = mysql_fetch_assoc($result);</span>
Salin selepas log masuk

vs

<span>$mysqli = new mysqli("host", "user", "pass", "database");
</span><span>$result = $mysqli->query("SELECT * FROM posts LIMIT 1");
</span><span>$row = $result->fetch_assoc();</span>
Salin selepas log masuk

Itu sahaja yang diperlukan untuk membuat persediaan lebih selamat.

Anda harus memilih PDO, walaupun. Lebih banyak lagi pada titik 2.

2. Tidak menggunakan PDO

Jangan salahkan saya, Mysqli adalah generasi (agak harfiah) menjelang lanjutan MySQL purba. Ia disimpan terkini, selamat, boleh dipercayai dan cepat. Walau bagaimanapun, ia adalah spesifik MySQL. Menggunakan PDO sebaliknya akan membolehkan anda menggunakan beberapa sintaks yang berorientasikan objek praktikal, dan akan menyediakan anda untuk Tango dengan pangkalan data SQL yang lain seperti PostgreSQL, MS SQL, dan banyak lagi. Lebih -lebih lagi, PDO akan membolehkan anda menggunakan parameter yang dinamakan, ciri yang sangat berguna, beberapa orang boleh membayangkan pergi ke apa -apa lagi selepas mengambil kesempatan yang betul. Akhir sekali, ada ini: Anda boleh menyuntik data yang diambil terus ke dalam objek baru, yang merupakan timesaver yang menyenangkan dalam projek besar.

3. Tidak menulis semula URL

Satu lagi yang biasa diabaikan dan mudah untuk menyelesaikan masalah. URL seperti myapp.com/index.php?p=34&g=24 tidak boleh diterima pada hari ini dan umur. Oleh kerana ia sangat sukar untuk menulis panduan penulisan semula URL yang baik yang akan merangkumi setiap pelayan dan kerangka di luar sana, hampir setiap rangka kerja mempunyai panduan tentang cara menubuhkan URL bersih (Laravel, Phalcon, Symfony, Zend) dan mana -mana yang Don ' T tidak layak menggunakan - mereka jelas tidak peduli dengan amalan moden.

4. Kesalahan menekan

Saya menulis tentang ini dalam artikel sebelumnya, tetapi ia patut disebut semula. Bila -bila masa anda mendapati diri anda menggunakan pengendali @, mempertimbangkan semula dan mendekati masalah dari sudut yang berbeza dengan lebih berhati -hati. Ambil kata -kata saya apabila saya mengatakan bahawa 20 baris kod curl boilerplate di sekitar fungsi aplikasi lebih baik daripada satu baris dengan operator @ di hadapannya.

Saya dapati melalui eksperimen peribadi bahawa pendekatan yang baik adalah yang saya menganjurkan dalam jawatan asal - menjadikan semua notis anda menjadi kesilapan yang membawa maut. Memastikan

tiada apa -apa log masuk ke dalam log ralat kerana ada secara literal tiada apa -apa untuk log lebih baik daripada berpura -pura kotoran tidak memukul kipas dengan memegang @ di hadapan mata anda.

kami baru-baru ini merangkumi beberapa add-on Heroku untuk pengeluaran aplikasi PHP yang sedia ada, dan salah satunya adalah papertrail yang sangat baik-tambahan yang membolehkan anda menolak semua kesilapan aplikasi anda ke belakang mereka untuk mencari, mengumpulkan, dan menghapuskan lebih mudah pada; Jadi, walaupun beberapa kesilapan berlaku, lebih baik membiarkan mereka dilog masuk dan menyingkirkannya dengan menetapkan kod anda, daripada membungkam mereka dan bermain bisu di hadapan pengguna anda.

5. Menetapkan dalam keadaan

walaupun pemaju yang berpengalaman kadang -kadang mempunyai slip jari dan tulis jika ($ condition = 'value') {bukan jika ($ condition == 'value') {. Tangan kami akan tergelincir, papan kekunci kami tidak akan mendaftarkan keypress, kami akan menampal dari bahagian lain kod di mana tugasan sebenarnya berlaku - ia berlaku, dan kami biasanya mengetahui hanya apabila kami menjalankan aplikasi.

Terdapat beberapa cara untuk mengelakkan sepenuhnya:

    Gunakan IDE yang baik. Mana -mana IDE yang baik (seperti PHPStorm, sebagai contoh) akan memberi amaran kepada anda mengenai isu -isu "tugasan dalam keadaan" apabila ia mengesannya.
  1. Gunakan "keadaan Yoda". Anda akan melihatnya dalam banyak projek yang popular, walaupun rangka kerja yang besar. Dengan membalikkan perbandingan (seperti dalam, jika ('nilai' = $ keadaan) {), IDE yang lemah akan melihat masalah itu juga. Ada yang menganggap sintaks Yoda menjengkelkan dan tidak berguna, garis hayat di mana tidak ada ("lebih berhati -hati dengan kod anda, sial"), tetapi untuk masing -masing sendiri - jika ia membantu seseorang, saya semua untuk itu. Jika kita semua elitis, rangka kerja WordPress dan Zend tidak akan wujud.
  2. Dengan hanya menyimpannya, anda akan membangunkan refleks mata untuk menyemaknya setiap kali anda menulisnya. Apa yang diperlukan adalah amalan, tetapi ia berlaku walaupun kepada devs terbaik dan di mana 1 dan 2. Datang berguna.
6. Menjadi terlalu telus

mengatakan ini mungkin membangkitkan beberapa kontroversi, tetapi di sini juga berlaku. Kecuali anda mempunyai keyakinan 100% dalam pemaju rangka kerja, atau tidak mengendalikan aplikasi kritikal perniagaan yang tinggi dan tinggi, anda harus sentiasa berusaha untuk mengaburkan cara back-end anda-bukan penyiaran yang rangka kerja aplikasi anda sebenarnya boleh Bantuan dalam mencegah serangan, sekiranya kelemahan keselamatan rangka kerja itu ditemui. Contohnya:

Jika anda menggunakan penterjemah Symfony2 dan mempunyai laluan dengan peningkatan parameter {_locale} sekarang! http://t.co/jihxhb8mzt
- Jérémy derussé (@jderusse) 15 Julai 2014

Dalam tweet ini, pengetahuan mengenai isu suntikan kod yang serius sedang disiarkan ke domain awam. Ini bagus jika anda sedang bekerja dan dapat menaik taraf dengan segera tanpa masalah DevOps dan mendapatkan pasukan yang pertama, tetapi bagi kebanyakan orang dan syarikat yang menggunakan Symfony, ini tidak berlaku. Walaupun Symfony boleh ditingkatkan melalui komposer (seperti yang disebutkan oleh Ryan dalam komen di bawah), ia biasanya mengambil sedikit masa untuk mendapatkan kelulusan dalam pasukan besar dengan persekitaran pelbagai peringkat. Semua laman web yang menggunakan pendekatan penterjemah ini yang diisytiharkan pengguna Symfony adalah (adakah?) Oleh itu, terdedah kepada kelemahan ini sehingga tetap.

Menggunakan Symfony dalam contoh di atas hanya itu - contohnya. Situasi yang sama telah timbul dengan perisian lain yang banyak selama bertahun -tahun. Kembali ketika saya masih menggunakan Rangka Kerja Zend secara komersil, kami juga berlaku, dan mengalami serangan kerana itu. WordPress mempunyai bahagian gaffes keselamatan dan kita tahu berapa tinggi peratusan laman web di luar sana mereka kuasa. Perkara -perkara ini berlaku, dan kadang -kadang, sumber terbuka dan ketelusan bukanlah pendekatan terbaik apabila berurusan dengan aplikasi yang membawa majoriti aliran pendapatan syarikat.

7. Tidak mengeluarkan konfigurasi pembangunan

Terakhir tetapi tidak kurang, penyingkiran konfigurasi pembangunan harus disebutkan. Baru -baru ini (dan kebetulan yang jujur ​​saya menyebutkan Symfony di sini sekali lagi), CNET mengalami serangan kerana tidak mengeluarkan konfigurasi pembangunan mereka.

uhmmm no: http://t.co/raqis1ycwq #security #symfony

- Marco Pivetta (@ocramius) 15 Julai 2014

CNET, salah satu laman berita teknologi terbesar di dunia, didasarkan pada Symfony. Symfony, seperti yang anda ketahui, menampilkan dua titik kemasukan ke aplikasi anda: app.php dan app_dev.php. Dengan menunjuk penyemak imbas anda kepada satu, anda mendapat persekitaran pengeluaran. Dengan menunjuk kepada yang mempunyai akhiran _dev, anda pasti mendapat versi pembangunan, yang mempunyai debugger, data sensitif, dan banyak lagi. Sama ada ini baik atau buruk adalah subjek banyak perbincangan (sekali lagi, terima kasih kepada Ryan kerana menunjuk ini), tetapi tidak dapat dinafikan bahawa ia membuka beberapa pemaju clumsier untuk kesilapan seperti yang dialami oleh CNET. Lebih -lebih lagi, mana -mana URL lain yang diakses apabila di app_dev akan diarahkan ke URL App_DEV yang lain. Dalam erti kata lain, bukan hanya halaman indeks yang dilancarkan dalam mod pembangunan, ia adalah keseluruhan laman web - dalam kes CNET, itu banyak akses.

Jika anda mengikuti perbincangan di Twitter, ia akan menjadi sangat sedih dengan cepat - dan apa yang lebih sedih adalah bahawa ia dapat dielakkan dalam kerja kedua:

  1. Devs boleh mengeluarkan app_dev.php dari pelayan pengeluaran
  2. Devs boleh mempunyai IPS Whitelisted yang dibenarkan untuk mengakses app_dev.php, iaitu bagaimana ia berfungsi secara lalai melainkan anda melonggarkan sekatan tersebut.

Sama ada pendekatan ini akan menghalang semua masalah. Ingat, apabila menolak pengeluaran, pastikan konfigurasi pembangunan anda sama ada tidak boleh diakses sepenuhnya, atau hanya boleh diakses dengan set IPS yang disenaraikan.

Kesimpulan

Bagaimana perasaan anda tentang senarai ini? Adakah ia meliputi aspek yang sama atau terlalu esoterik? Adakah anda mempunyai beberapa perangkap yang lebih umum yang tiga jawatan telah gagal disebutkan? Izinkan saya tahu dalam komen di bawah dan kami akan mengemas kini siaran jika nasihat anda adalah bunyi!

Atas ialah kandungan terperinci 7 Lebih banyak kesilapan yang biasanya dibuat oleh pemaju 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan