Latar Belakang
Saya dikontrak untuk membantu perusahaan menjaga server mereka. Saya bekerja pada beberapa proyek PHP kecil tetapi juga melihat masalah kinerja dan baru-baru ini, memindai log untuk peretas.
Orang-orang ini telah menjalankan server mereka untuk beberapa waktu dan memiliki apa yang saya sebut aplikasi warisan pada kaki terakhirnya. Ini menggunakan kutipan ajaib, variabel global (yang memungkinkan $id
untuk ditimpa oleh $_GET['id']
), gunakan .htaccess sebagai satu-satunya keamanan mereka dalam beberapa kasus, sebut saja. Sebuah mimpi buruk keamanan dan pemrograman.
Kami telah diretas di masa lalu, sebagian besar dengan suntikan SQL, yang akan menjalankan SLEEP(99999999)
perintah dan bertindak sebagai serangan DOS. Untungnya mereka tidak menjalankan "meja bobby kecil",
XKCD: http://xkcd.com/327/
Jadi saya menulis ulang pernyataan SQL mereka yang rentan dari mysql_query()
(bukan mysqli) ke transaksi PDO. Saya juga menganalisis kueri untuk SLEEP
dan UNION
, yang tidak kami gunakan tetapi injeksi. Sejauh ini baik.
Masalah terbaru
Baru-baru ini kami diberi tahu bahwa catatan berubah dalam DB untuk pengguna, seperti alamat email mereka yang mungkin dibuat oleh pengirim spam.
Saya perhatikan kolom mereka tidak memiliki last_modified
kolom, jadi kami bahkan tidak bisa tahu kapan kolom itu diubah, apalagi oleh siapa. Saya menambahkan kolom itu, tapi itu bukan langkah pertama.
Ketika saya melihat ke tabel ini, saya perhatikan kata sandi tidak asin atau bahkan hash, hanya disimpan sebagai plaintext.
Komunikasi Klien
Bagaimana saya bisa mendekati mereka tentang seluruh situasi, sebagai kontraktor, tanpa menggapai-gapai lengan saya seperti orang gila? Ada saran? Saya sedang memikirkan pendekatan yang tenang,
MASALAH 1 Ringkasan Mengapa ini menjadi masalah? Apa yang bisa terjadi jika ini tidak diperbaiki Perbaikan yang disarankan MASALAH # 2 Ringkasan Mengapa ini menjadi masalah? Apa yang bisa terjadi jika ini tidak diperbaiki Perbaikan yang disarankan