Cakephp tm v 0.2 9 unduh

#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 Terminologi

Sebenarnya, 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

  • CRUD. berarti Buat Pembaruan Hapus. Sebenarnya ketika pengembang berbicara tentang CRUD merujuk ke halaman yang diperlukan untuk membuat daftar catatan dari database, formulir untuk membuat catatan baru dan formulir untuk memperbarui catatan
  • Perancah. Teknik yang membuat daftar CRUD dan formulir dengan cepat dan menunjukkannya

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

  • Generator CRUD Silex
  • CakePHP (dari CookBook)

Kami membutuhkan Data

Sekarang 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

MySQL

1

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 Kue

Saatnya menginstal CakePHP. Anda dapat memilih untuk mengunduh atau menggunakan git. Saya lebih suka git tapi mungkin Anda ingin mendownload

Git

Saya membuat direktori dan memasukkannya dan mengkloning

Kerang

1

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

Kerang

1

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

Unduh

Anda 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

 

Cobalah

Jika Anda menggunakan Apache di lingkungan Anda, semuanya berfungsi dengan baik dan Anda menghentikan langkah selanjutnya

NGINX

Di sisi lain, jika Anda bekerja dengan nginx, Anda perlu mengonfigurasi server Anda untuk membuat lingkungan yang baik untuk CakePHP. Ikuti petunjuk di CakePHP Cookbook

Mencoba

Kemudian, jika Anda memuat sekarang URL CakePHP Anda, Anda akan melihat layar besar pertama Anda. )

Cakephp tm v 0.2 9 unduh

 

Ini benar, CakePHP memberi tahu kita bahwa semuanya sudah benar tetapi database tidak perlu kita tulis konfigurasi database

Konfigurasi Kue

Pertama, 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

PHP

1

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 Model

Sekarang 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

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 Controller

Saatnya 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

PHP

1

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

PHP

1

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

Perancah

Daftar Perancah

Cakephp tm v 0.2 9 unduh

 

Edit Perancah

Cakephp tm v 0.2 9 unduh

Anda dapat menelusuri kategori di domain. tld/kategori

Perbaikan

Jika 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

PHP

1

2

3

4

5

6

7

 

Aplikasi. menggunakan('AppModel', 'Model');

kelas Artikel ekstensi AppModel {

    publik $nama = 'Artikel';

    publik $belongsTo = 'Kategori';

}

aplikasi/Model/Kategori. php

PHP

1

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