Saya telah disewa oleh seseorang untuk melakukan pekerjaan kecil di sebuah situs. Ini situs untuk perusahaan besar. Ini berisi data yang sangat sensitif, jadi keamanan sangat penting. Setelah menganalisis kode, saya perhatikan itu dipenuhi dengan lubang keamanan - baca, banyak file PHP yang melemparkan input pengguna / posting langsung ke permintaan mysql dan perintah sistem.
Masalahnya adalah, orang yang membuat situs untuknya adalah seorang programmer dengan keluarga dan anak-anak yang bergantung pada pekerjaan itu. Saya tidak bisa mengatakan: "situs Anda adalah taman hiburan naskah anak-anak. Biarkan saya mengulanginya untuk Anda dan Anda akan baik-baik saja."
Apa yang akan kamu lakukan dalam situasi ini?
Memperbarui:
Saya mengikuti beberapa saran bagus di sini dan dengan sopan melaporkan kepada pengembang bahwa saya telah menemukan beberapa kemungkinan kelemahan keamanan di situs. Saya menunjukkan garis dan mengatakan mungkin ada kerentanan untuk serangan injeksi SQL di sana, dan bertanya apakah dia tahu tentang hal itu. Dia menjawab: "tentu, tapi saya pikir untuk mengeksploitasinya penyerang harus memiliki informasi tentang struktur database; saya harus mengerti lebih baik" .
Pembaruan 2:
Saya mengatakan bahwa tidak selalu demikian dan menyarankan agar ia mengikuti tautan pertanyaan Stack Overflow ini untuk menanganinya dengan benar: Bagaimana mencegah injeksi SQL dalam PHP? Dia mengatakan akan mempelajarinya dan mengucapkan terima kasih karena telah memberitahunya sebelumnya. Saya kira bagian saya selesai, terima kasih kawan.
sumber
Jawaban:
Pertama dan terutama di sini, prioritasnya adalah untuk menutup lubang keamanan.
Jika Anda bekerja secara langsung dengan insinyur yang menulis ini, dokumentasikan semuanya dan berikan kepada insinyur itu.
Jika tidak, beri tahu atasan Anda bahwa masalah keamanan lebih besar dari yang diperkirakan sebelumnya dan bahwa situs tersebut membutuhkan banyak pekerjaan. Mintalah untuk bekerja dengan pengembang utama yang ada di situs, dan tawarkan untuk mengajari mereka tentang keamanan PHP (jangan berjanji untuk membuat orang tersebut ahli, tetapi tawarkan untuk melatih mereka dalam segala hal yang Anda ketahui) sehingga orang tersebut dapat mengambil alih setelah selesai.
Jangan jadikan ini masalah "orang ini jahat, tembak dia". Dekati dari perspektif "Hei, saya menemukan beberapa bug potensial yang perlu diperbaiki stat, yang tampaknya berasal dari beberapa ketidaktahuan / kesalahpahaman umum tentang keamanan situs. Saya juga ingin berbicara dengan pengembangan Anda sehingga kami dapat meningkatkan situs Anda dan mudah-mudahan menghindari lebih banyak masalah ini di masa depan. "
sumber
Ada perbedaan antara ketidaktahuan dan ketidakmampuan. Ada saat ketika Anda tidak tahu apa itu injeksi SQL, dan tidak ada alasan untuk percaya programmer asli tidak mampu memperbaiki masalah setelah dia mengetahui masalah tersebut.
Jadi, beri tahu mereka. Jadilah spesifik dan obyektif, dan sediakan diri Anda untuk menjawab pertanyaan, berikan contoh eksploitasi, dan rekomendasi untuk perbaikan. Jika mereka masih belum mengerti setelah itu, hal yang paling bisa Anda lakukan adalah tidak menaruh informasi pribadi Anda di situs.
sumber
Pekerjaan Anda bukan untuk mengulangi situs untuknya. Ini untuk memperbaiki bug kecil. Namun, jika Anda telah memperhatikan masalah keamanan yang harus diperbaiki, Anda dapat membawanya ke pemilik situs dan menawarkan wawasan tentang apa masalahnya.
Jangan mencaci maki atau berbicara negatif tentang pengembang asli atau mengomentari betapa mengerikan kode itu. Bersikap hormat dan profesional. Anda dapat menawarkan untuk bekerja dengan pengembang untuk menyelesaikan masalah. Jangan mencoba memperbaikinya sendiri atau menawarkan solusi kecuali Anda telah dikontrak untuk mengatasi masalah tersebut. Jika mereka mengikuti saran Anda dan Anda salah, mereka bisa membalas Anda.
sumber
Pertama dan terpenting - perbaiki hal yang mereka pekerjakan untuk Anda. Jika Anda tidak melakukannya, maka Anda akan dianggap sebagai tipe konsultan yang tertarik untuk membuat lebih banyak pekerjaan untuk diri mereka sendiri, daripada menyelesaikan pekerjaan.
Seiring dengan perbaikan, Anda perlu memberi mereka daftar hal-hal yang Anda perhatikan salah dari sudut pandang keamanan, dan mengapa hal-hal ini salah.
sumber
Tidak ada gunanya bagi siapa pun untuk tidak melaporkan masalah tersebut. Jika Anda memiliki tugas tertentu, Anda disewa untuk menyelesaikannya tetapi mendokumentasikan masalah keamanan lainnya saat Anda melihatnya dan melaporkannya ke individu yang sesuai, mungkin individu yang Anda laporkan untuk tugas yang Anda pekerjakan.
Ini adalah situasi di mana soft skill yang kuat akan berguna karena untuk menangani ini dengan kebijaksanaan tidak akan memerlukan meletakkan pekerjaan yang dilakukan oleh orang lain di situs dan tidak membuat pengembang merasa seolah-olah Anda mempertanyakan bakatnya.
Jelas menghindari kata-kata seperti "omong kosong, buruk, miskin, membingungkan" ketika merujuk pada kode / kekurangan dan kata-kata serupa untuk pengembang yang menulis situs.
sumber
Selain jawaban lain yang mungkin ingin Anda lakukan adalah mengarahkan pengembang pada beberapa sumber tentang seberapa mudah masalah injeksi SQL dapat dieksploitasi, misalnya sqlmap yang merupakan alat eksploitasi SQL Injection otomatis.
Apa yang saya temukan efektif dalam menunjukkan keseriusan masalah semacam ini di masa lalu adalah menunjukkan apa yang dapat dilakukan dengannya, jadi jika Anda menjalankan sesuatu seperti itu terhadap dev. salinan situs untuk menunjukkannya mengekstraksi data dll. Anda mungkin meyakinkan mereka tentang keseriusannya.
sumber
Pertama dan satu-satunya; Manajemen tidak mau mendengar masalah. Saya dipecat dari Kantor Manajemen Personalia (izin keamanan untuk gedung putih) karena saya menunjukkan betapa tidak amannya sistem mereka. Itu beberapa waktu yang lalu, tetapi sikap manajemen tidak berubah.
Atasi masalah dengan pengembang, melalui email sehingga Anda memiliki jejak, lalu berjalan atau lari. Ketika mereka akhirnya memiliki masalah, sebagai kontraktor, mereka akan mencoba menyalahkan Anda, terlepas dari keterlibatan apa pun yang terkait dengan masalah tersebut.
Memiliki masalah yang sama mendasarnya dengan injeksi SQL, menunjukkan bahwa mereka murah ketika mereka awalnya mengembangkan sistem, dan kemungkinan mereka paling murah sekarang. Dapatkan apa yang Anda bisa dari mereka ketika mereka masih dalam bisnis, tetapi mencari pengembangan bisnis di tempat lain.
sumber