#CVE IDCWE ID# dari ExploitsVulnerability Type(s)Publikasikan TanggalPerbarui DateScoreTingkat Akses yang DiperolehAccessComplexityAuthenticationConf. Integ. Faedah. 1CVE-2020-35239352Bypass CSRF2021-01-262021-02-02NoneRemoteMediumNot requiredPartialPartialPartialKerentanan ada di CakePHP versi 4. 0. x sampai 4. 1. 3. Komponen CsrfProtectionMiddleware memungkinkan parameter metode override untuk melewati pemeriksaan CSRF dengan mengubah metode permintaan HTTP ke string arbitrer yang tidak ada dalam daftar metode permintaan yang diperiksa CakePHP. Juga, middleware rute tidak memverifikasi bahwa metode yang ditimpa ini (yang bisa berupa string arbitrer) sebenarnya adalah metode HTTP. 2CVE-2020-15400352XSS CSRF2020-06-302021-07-21NoneRemoteMediumTidak diperlukanNonePartialNoneCakePHP sebelum 4. 0. 6 kesalahan penanganan pembuatan token CSRF. Ini mungkin dapat dieksploitasi dari jarak jauh dalam hubungannya dengan XSS. 3CVE-2019-114585022019-05-082020-08-24NoneRemoteLowTidak diperlukanNonePartialPartialMasalah ditemukan di SmtpTransport di CakePHP 3. 7. 6. Objek yang tidak diserialisasi dengan properti internal yang dimodifikasi dapat memicu penimpaan file arbitrer saat penghancuran. 4CVE-2012-439926412012-10-092013-07-30NoneRemoteLowTidak diperlukanPartialNoneNoneKelas Xml di CakePHP 2. 1. x sebelum 2. 1. 5 dan 2. 2. x sebelum 2. 2. 1 memungkinkan penyerang jarak jauh untuk membaca file secara sewenang-wenang melalui data XML yang berisi referensi entitas eksternal, alias serangan injeksi entitas eksternal XML (XXE). 5CVE-2011-3712200+Info2011-09-232012-03-13NoneRemoteLowTidak diperlukanPartialNoneNoneCakePHP 1. 3. 7 memungkinkan penyerang jarak jauh untuk mendapatkan informasi sensitif melalui permintaan langsung ke a. php, yang mengungkapkan jalur instalasi dalam pesan kesalahan, seperti yang ditunjukkan oleh operator. php dan file tertentu lainnya. 6CVE-2010-4335202Exec Code2011-01-142011-01-22NoneRemoteLowNot requiredPartialPartialPartialFungsi _validatePost di libs/controller/components/security. php di CakePHP 1. 3. x sampai 1. 3. 5 dan 1. 2. 8 memungkinkan penyerang jarak jauh untuk memodifikasi cache Cake internal dan mengeksekusi kode arbitrer melalui nilai data[_Token][fields] yang dibuat yang diproses oleh fungsi unserialize, seperti yang ditunjukkan dengan memodifikasi cache file_map untuk mengeksekusi file lokal arbitrer. 7CVE-2006-503122Dir. Trav. 2006-09-272017-07-20NoneRemoteLowTidak diperlukan Kerentanan traversal PartialNoneNoneDirectory di app/webroot/js/vendor. php di Cake Software Foundation CakePHP sebelum 1. 1. 8. 3544 memungkinkan penyerang jarak jauh untuk membaca file arbitrer melalui a. (dot dot) pada parameter file, diikuti dengan nama file yang diakhiri dengan "%00" dan a. nama file js. 8CVE-2006-406779XSS2006-08-102017-07-20NoneRemoteMediumTidak diperlukanNonePartialNoneCross-site scripting (XSS) kerentanan dalam kue/libs/kesalahan. php di CakePHP sebelum 1. 1. 7. 3363 memungkinkan penyerang jarak jauh menyuntikkan skrip web atau HTML melalui URL, yang tercermin kembali di halaman kesalahan 404 ("Tidak Ditemukan"). CATATAN. beberapa detail ini diperoleh dari informasi pihak ketiga Jumlah total kerentanan. 8 Halaman. 1 (Halaman Ini) Penggunaan penerimaan penerimaan informasi ini untuk digunakan dalam kondisi SEBAGAIMANA ADANYA. Tidak ada jaminan, tersirat atau lainnya, sehubungan dengan informasi ini atau penggunaannya. Setiap penggunaan informasi ini adalah risiko pengguna. Pengguna bertanggung jawab untuk mengevaluasi keakuratan, kelengkapan, atau kegunaan informasi, pendapat, saran, atau konten lainnya. SETIAP PENGGUNA AKAN BERTANGGUNG JAWAB ATAS SEGALA akibat dari penggunaan situs web ini secara langsung atau tidak langsung. SEMUA JAMINAN APA PUN SECARA TEGAS DITOLAK. Situs ini TIDAK BERTANGGUNG JAWAB ATAS SEGALA KEHILANGAN LANGSUNG, TIDAK LANGSUNG atau bentuk kerugian lainnya Artikel ini didedikasikan untuk Alex, yang bertanya kepada saya bagaimana cara membuat CRUD dasar dari database tanpa pengembangan, ini disebut Scaffolding Bagi saya, Scaffolding adalah salah satu teknik paling menakjubkan yang tidak ingin digunakan orang. Ada alasan utama, alasan itu adalah setiap kali seseorang mengakses URL dan mengeksekusi kode, proses besar mulai meminta database dan melakukan CRUD dari nol. Ada banyak framework dengan Scaffolding di PHP, tapi saya lebih suka CakePHP karena kesederhanaannya. Bahasa lain seperti Python dengan Django dan Flask atau Ruby On Rails memiliki mini scaffolding sendiri Tabel konten Sedikit TerminologiSebenarnya, CakePHP versi terakhir tidak mendukung Scaffolding, mereka menghapusnya di versi 2. 5 (sebenarnya versi terakhir dari CakePHP adalah 3. 3) Sebelum memulai saya ingin menjelaskan beberapa kosa kata di sini
Ok, lanjut jelaskan perbedaan kedua teknik utama tersebut mengenai hal ini. Yang terbaik dari keduanya adalah generasi CRUD. CRUD Generation mengeksekusi satu kode yang menjelajahi database dan menghasilkan file PHP yang diperlukan untuk mengakses database. Scaffolding melakukan hal serupa, menjelajahi database dan membuat CRUD dengan cepat. Ini adalah alasan yang membutuhkan banyak sumber daya Jika Anda memiliki database yang konsisten dan tidak perlu mengubah apa pun, saya sarankan Anda menggunakan beberapa generator CRUD. Dua yang terbaik untukku
Kami membutuhkan DataSekarang saya ingin memulai proyek scaffolding kami yang luar biasa. Pertama-tama, saya perlu membuat database. Saya akan mulai membuat 2 tabel. Salah satu artikel dan lainnya dari kategori artikel. Sesuatu yang sederhana Saya mengikuti nama konvensi model CakePHP https. //buku. cakephp. org/2. 0/id/memulai-/cakephp-conventions. html#konvensi-model-dan-database Saya tidak ingin masuk untuk menjelaskan database, saya kira Anda bisa mengetahui cara membuat database dan tabel Anda sendiri dan terhubung ke server. Bagaimanapun, di sini strukturnya MySQL1 2 3 4 5 6 7 8 9 sepuluh 11 keduabelas 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 Ke-tiga puluh satu 32 33 34 35 36 37 38 BUAT TABEL `Kategori` ( `id` int (11) tidak ditandatangani< /a> TIDAK NULL AUTO_INCREMENT , `name` varchar (100) DEFAULT< /a> NULL , `aktif` tinyint (1) DEFAULT< /a> NULL , KUNCI UTAMA (`id`) ) ENGINE=InnoDB DEFAULT CHARSET= utf8mb4;
MASUKKAN KELUAR `Kategori` (`id`, `nama`, `aktif`) NILAI (1, 'Kategori 1' ,1), (2, 'Kategori 2' ,1), (3, 'Kategori 3' ,0), (4, 'Kategori 4' ,1);
BUAT TABEL `Artikel` ( `id` int (11) tidak ditandatangani< /a> TIDAK NULL AUTO_INCREMENT , `nama` varchar (100) BUKAN NULL DEFAULT '' , `harga` desimal (9,2) BUKAN NULL , `aktif` tinyint (1) TIDAK NULL , `stok` int (11) TIDAK NULL , `category_id` int (11) tidak ditandatangani< /a> TIDAK NULL , KUNCI UTAMA (`id`), KEY `category_id` (`category_id`), CONSTRAINT `Articles_ibfk_1` FOREIGN KEY (`category_id `) REFERENSI `Kategori` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET= utf8mb4;
MASUKKAN KE DALAM `Artikel` (`id`, `nama`, `harga`, `aktif`, `stok`, `category_id`) NILAI (1, 'Art 1' ,10. 00,1,5,1), (2, 'Art 2' ,10. 00,1,5,1), (3, 'Art 3' ,10. 00,1,5,2), (4, 'Art 4' ,10. 00,1,0,2), (5, 'Art 5' ,10. 00,1,5,3), (6, 'Art 6' ,10. 00,0,5,4), (7, 'Art 7' ,10. 00,1,5,4), (8, 'Art 8' ,10. 00,1,5,4), (9, 'Art 9' ,10. 00,1,5,4);
Instal KueSaatnya menginstal CakePHP. Anda dapat memilih untuk mengunduh atau menggunakan git. Saya lebih suka git tapi mungkin Anda ingin mendownload GitSaya membuat direktori dan memasukkannya dan mengkloning Kerang1 2 3 4 5 6 7 8 9 sepuluh 11 keduabelas 13 14 15 16 17 18 19 20 $ mkdir perancah $ cd perancah $ git kloning - b '2. 4. 9' -- tunggal - cabang https. // github. com / cakephp / cakephp. git . Klonar en <<. >>. . . jauh. Menghitung objek. 180322, selesai. jauh. Mengompresi objek. 100% (102 / 102), selesai. jauh. Total 180322 (delta 17 ), digunakan kembali 99 ( delta 14), paket - digunakan kembali 180206 Menerima objek. 100% (180322 / 180322), 28. 16 MiB . 3. 22 MiB / s, selesai. Menyelesaikan delta. 100% (136504 / 136504), selesai. Memeriksa konektivitas. . . hecho. Catatan. memeriksa keluar '4b5e3c176ece9ddab5ac438cfba0bdcdd0d3ab9e'.
Anda ada di 'KEPALA terpisah' status< /a>. Anda dapat melihat berkeliling, buat eksperimental mengubah dan melakukan mereka, dan Anda dapat membuang apa saja berkomitmen Anda membuat dalam ini status tanpa memengaruhi setiap cabang dengan melakukan lagi checkout.
Jika Anda ingin untuk membuat a baru cabang untuk mempertahankan melakukan Anda membuat, Anda mungkin lakukan jadi (sekarang atau nanti) oleh menggunakan - b dengan perintah pembayaran command lagi. Contoh.
git pembayaran - b <baru - cabang - name> Dengan -b '2. 4. 9 'dalam klon, kami mengatakan bahwa hanya menginginkan cabang atau tag ini. Jika Anda melihat VERSI. txt dari CakePHP Anda dapat melihat versi lib/Kue/VERSI. txt Kerang1 2 3 4 5 6 7 8 9 sepuluh 11 keduabelas 13 14 15 16 17 18 19 20 21 # cat lib/Kue/VERSI. txt ////////////////////////////////////////////////// / ///////////////////////////////////////////////// // // +--------------------------------- -------------------------------------------------- - ---------+ // // CakePHP Versi // // Menahan a statis string mewakili versi saat ini dari KuePHP // // CakePHP(tm) . Cepat Pengembangan Framework (https . // cakephp. org) // Hak Cipta (c) Kue Perangkat Lunak Yayasan, Inc. (https. // foundation kue. org) // // Berlisensi di bawah The MIT Lisensi // Redistribusi dari file harus pertahankan pemberitahuan di atas hak cipta notice. // // @hak cipta Hak Cipta (c) Kue Perangkat Lunak Foundation, Inc. (https. // dasar kue. org) // @tautan https. // cakephp. org // @paket Kue // @sejak CakePHP(tm) v 0. 2. 9 // @lisensi https. // www. sumber terbuka. org / lisensi / mit - lisensi. php MIT Lisensi // +--------------------------------- -------------------------------------------------- - ---------+ // ////////////////////////////////////////////////// / ///////////////////////////////////////////////// // 2. 4. 9 UnduhAnda juga dapat mengunduhnya langsung dari GitHub. Ikuti tautan berikutnya dan klik tombol hijau bernama Kloning Atau Unduh lalu klik Unduh ZIP. Dekompresi file dalam direktori dan lanjutkan Kue Github PHP
CobalahJika Anda menggunakan Apache di lingkungan Anda, semuanya berfungsi dengan baik dan Anda menghentikan langkah selanjutnya NGINXDi sisi lain, jika Anda bekerja dengan nginx, Anda perlu mengonfigurasi server Anda untuk membuat lingkungan yang baik untuk CakePHP. Ikuti petunjuk di CakePHP Cookbook MencobaKemudian, jika Anda memuat sekarang URL CakePHP Anda, Anda akan melihat layar besar pertama Anda. )
Ini benar, CakePHP memberi tahu kita bahwa semuanya sudah benar tetapi database tidak perlu kita tulis konfigurasi database Konfigurasi KuePertama, kita perlu terhubung ke database. Ini berarti kita perlu membuat file konfigurasi. Kami memiliki satu file sampel di 1 aplikasi / Konfigurasi / database. php. Bawaan Ubah namanya menjadi 1 aplikasi / Konfigurasi / database. php Dan buka, cari kode berikutnya dan isi dengan data Anda (penting uncomment utf-8 jika Anda menggunakan aksen) app/Config/database. php PHP1 2 3 4 5 6 7 8 9 sepuluh publik $default = array( 'sumber data' = > 'Database/Mysql', 'persisten' = > salah, 'host' = > 'localhost', 'masuk' = > 'pengguna', 'sandi' = > 'sandi', 'basis data' = > 'nama_database', 'awalan' = > '',< /a> //'enkode' => 'utf8', ); Basis data yang dikonfigurasi, langkah selanjutnya, memulai kode perancah yang besar dan kompleks Membuat ModelSekarang saatnya membuat file model untuk memberi tahu CakePHP tabel apa saja yang terlibat. Buat file 1 aplikasi / Model / Kategori. php Dan tulis (atau tempel) kode berikutnya aplikasi/Model/Kategori. php 1 2 3 4 5 6
Aplikasi. menggunakan('AppModel', 'Model'); kelas Kategori ekstensi AppModel { publik $nama = 'Kategori'; } Simpan dan lakukan hal yang sama dengan Articles 1 aplikasi / Model / Artikel. php Dan kode aplikasi/Model/Artikel. php 1 2 3 4 5 6 <?php
Aplikasi. . menggunakan('AppModel', 'Model'); kelas Artikel ekstensi AppModel { publik $nama = 'Article'; } Sudah selesai, kami punya model
Membuat ControllerSaatnya membuat Pengontrol. Pengontrol adalah file yang mengontrol eksekusi aplikasi dan meminta model untuk data dan mengirim ke tampilan. Di CakePHP juga dipetakan ke URL. Jika Anda ingin mengakses domain. tld/products Anda perlu membuat ProductsController. Dalam kasus kami, saya ingin dua URL, satu untuk Artikel dan yang lainnya untuk Kategori. Buat file 1 aplikasi / Pengontrol / ArticleController. php Dan sekarang kode yang paling rumit dan sulit dibaca app/Controller/ArticleController. php PHP1 2 3 4 5 6 kelas ArticlesController ekstensi AppController { publik $scaffold; } Properti $scaffold adalah yang paling penting, beri tahu CakePHP bahwa pengontrol ini adalah pengontrol Scaffolding Sekarang untuk kategori 1 aplikasi / Pengontrol / CategoriesController. php dan kode app/Controller/CategoriesController. php PHP1 2 3 4 5 6 kelas CategoriesController ekstensi AppController {
publik $scaffold;
} Selesai. Perancah itu bekerja. Anda perlu mengakses domain. tld/articles dan CakePHP bekerja untuk Anda, perancah beraksi PerancahDaftar Perancah
Edit Perancah Anda dapat menelusuri kategori di domain. tld/kategori PerbaikanJika Anda menelusuri sedikit, Anda melihat bahwa kategori tidak ditampilkan di Articles Scaffolding, hanya tampilkan id. Hal ini karena model perlu mengetahui relasi antar tabel. Hanya ganti model ke aplikasi/Model/Artikel. php PHP1 2 3 4 5 6 7
Aplikasi. menggunakan('AppModel', 'Model'); kelas Artikel ekstensi AppModel { publik $nama = 'Artikel'; publik $belongsTo = 'Kategori'; } aplikasi/Model/Kategori. php PHP1 2 3 4 5 6 7
Aplikasi. menggunakan('AppModel', 'Model'); kelas Kategori ekstensi AppModel { publik $nama = 'Kategori'; publik $hasMany = 'Artikel'; } Dengan properti $belongsTo dan $hasMany, kita memberi tahu Cake relasi dengan tabel. Ingatlah bahwa jika Anda tidak mengikuti konvensi, relasi ini tidak akan berfungsi. Dalam Articles penting adanya category_id, dengan nama lain relasinya akan lebih kompleks. Anda dapat melihat hubungan di sini Pesan Model CakePHP Akhirnya, saya tunjukkan bagaimana menggunakan Scaffolding dengan CakePHP. Tapi ingat bahwa ini adalah kerja keras untuk server jika Anda menggunakan banyak tabel dan pengguna, dan lebih baik menggunakan CRUD |