it-swarm-id.com

Bagaimana cara mengembangkan ekstensi Joomla yang aman?

Sebelum saya akan menulis ekstensi pertama saya, saya ingin memahami bagaimana mendesainnya sebisa mungkin kebal.

Apakah ada seperangkat aturan untuk menulis ekstensi Joomla yang aman?

Saya hanya bisa membayangkan injeksi SQL sebagai ancaman yang mungkin jadi saya tahu bahwa input form tidak pernah bisa dimasukkan langsung ke perintah SQL 'apa adanya'.

Apa vektor serangan lain yang harus saya perhatikan ketika menulis modul atau plugin khusus?

7
miroxlav

Satu hal utama yang telah Anda tunjukkan adalah SQL Injection. Ini adalah satu hal yang beberapa orang telah saya lihat sepertinya benar-benar ketinggalan dan mulai berkembang menggunakan non standar pengkodean Joomla dan mulai menulis antrian SQL menggunakan mysql_* perintah.

Hal kedua yang agak saya sebutkan pada poin pertama, yang selalu menempel pada standar pengkodean Joomla. Satu-satunya waktu Anda tidak boleh adalah ketika Joomla tidak memberikan alternatif.

Ketiga, jika Anda membuat ekstensi folder atau file, maka pastikan Anda memberi mereka izin yang benar dan jangan mulai membuat folder chmod 777. Ini adalah alasan yang tepat mengapa K2 yang merupakan salah satu ekstensi paling populer di luar sana dianggap rentan dan dihapus dari JED sementara.

Selalu gunakan token dengan formulir. Ini akan memastikan bahwa tidak ada serangan tidak sah dari situs lain yang dapat dieksekusi. Untuk informasi lebih lanjut tentang ini, lihat yang berikut ini:

http://docs.joomla.org/How_to_add_CSRF_anti-spoofing_to_forms

Jika Anda tidak yakin sesuatu telah menjalankan beberapa tes, coba mampir ke Code Review Stackexchange karena mungkin ada seseorang yang mau memeriksa kode Anda untuk Anda.

Satu hal yang dapat Anda lakukan adalah melihat Daftar Rentan Rentan untuk melihat ekstensi yang sementara (sampai diperbaiki) dihapus dari Direktori Ekstensi Joomla karena tidak aman.

Semoga ini memberi Anda sedikit wawasan dan semoga sukses dengan ekstensi pertama Anda

8
Lodder

Mengikuti dokumentasi resmi, berikut adalah beberapa langkah pada topik Pedoman pengkodean aman :

  • Validasi setiap data yang Anda dapatkan dari permintaan (POST, DAPATKAN, COOKIES, dll.). Jangan mempercayai pengguna dan seketat mungkin. Jika Anda mengharapkan integer, jangan izinkan string diterima.

  • Unggahan file - hindari, bila memungkinkan, menerima file di halaman web publik. Jika Anda perlu memvalidasi informasi meta file dan melakukan semua pemeriksaan yang mungkin.

  • Membangun kueri SQL - memahami cara kerja injeksi SQL tetapi juga bagaimana Anda menangani kesalahan basis data. Semakin banyak kesalahan yang Anda tampilkan, semakin banyak informasi yang Anda berikan tentang struktur basis data Anda. Idealnya Anda mencatat kesalahan tetapi tidak menampilkannya.

  • Formulir aman dengan menggunakan token

7
Valentin Despa

Ini sebagian besar aman untuk sebagian besar ekstensi, Namun sangat berhati-hati pada apa pun yang mungkin perlu menyimpan/mengedit file, pemfilteran atau validasi yang tidak benar dapat membuat titik masuk.

Selama Anda menggunakan JDatabase's API dengan benar, Anda harus aman dari injeksi sql juga. Anda dapat melihat com_content atau plg_system_loadpositon dalam pemasangan Joomla untuk membantu mengetahui beberapa poin lebih baik dari berbagai API Joomla (karena dokumentasi agak sulit untuk diikuti).

Juga menggunakan API jika mereka gagal dan semacam kerentanan digunakan, perbaikan mungkin akan berakhir menjadi pembaruan inti (jika JDat databasenya, saya bisa membayangkan rilis Joomla dalam satu jam jika ditemukan: D), ketimbang pembaruan ke ekstensi Anda.

Ini adalah salah satu kelemahan utama dari open source adalah bahwa siapa pun yang berniat melakukan kejahatan memiliki semua informasi yang diperlukan untuk melakukannya. Jika itu adalah ekstensi tertutup (tidak tersedia untuk umum) kemungkinan tidak akan ada masalah.

Terakhir, semakin sederhana ekstensi (kode kurang) semakin besar kemungkinan ekstensi itu 'kebal'. Ketika ekstensi tumbuh, ada banyak tempat lagi kesalahan kecil dapat terjadi untuk membuat titik masuk.

4
Jordan Ramstad