Ada praktek-praktek terbaik untuk pengujian keamanan dalam Agile development shop?

Mengenai pengembangan Agile, apa praktek-praktek terbaik untuk pengujian keamanan per rilis?

Jika itu adalah rilis bulanan, apakah ada toko-toko yang melakukan pen-tes setiap bulan?

Apa's aplikasi anda domain? Itu tergantung.

Karena anda menggunakan kata "Lincah" aku'm menebak itu's web app. Aku punya jawaban yang mudah untuk anda.

Pergi membeli salinan Burp Suite (it's #1 Google hasil untuk "bersendawa" --- yakin dukungan!); it'll biaya anda 99EU, atau ~$180USD, atau $98 Obama Dolar jika anda menunggu sampai November.

Bersendawa bekerja sebagai web proxy. Anda menelusuri melalui aplikasi web anda menggunakan Firefox atau IE atau apapun, dan mengumpulkan semua dapat anda menghasilkan. Ini adalah mendapatkan makan untuk fitur yang disebut "Penyusup", yang merupakan web yang telah mengirimkan hasil pengeditan.. Penyusup tidak akan mengetahui semua parameter yang anda berikan untuk setiap query handler. Hal ini kemudian akan mencoba dan menciptakan nilai-nilai untuk masing-masing parameter, termasuk SQL, filesystem, dan HTML metakarakter. Pada khas bentuk kompleks posting, ini akan menghasilkan sekitar 1500 rumah anda, yang anda'll melihat melalui untuk mengidentifikasi menakutkan --- atau, yang lebih penting dalam sebuah Tangkas konteks, baru --- kesalahan tanggapan.

Fuzzing setiap query handler di aplikasi web anda pada setiap rilis iterasi adalah #1 hal yang dapat anda lakukan untuk meningkatkan keamanan aplikasi tanpa melembagakan formal "BAIK", dan menambahkan jumlah pegawai. Di luar itu, meninjau kode untuk web utama aplikasi keamanan yang direkomendasikan:

  • Hanya menggunakan parameterized siap pernyataan SQL; don't pernah cukup concatenate string dan memberi mereka makan untuk database anda menangani.

  • Menyaring semua input untuk daftar putih dikenal karakter yang baik (alnum, dasar tanda baca), dan, yang lebih penting, filter output data dari hasil query untuk "menetralisir" HTML metakarakter untuk entitas HTML (quot, lt, gt, dll).

  • Menggunakan panjang acak keras-untuk-kira pengenal di mana pun anda're saat ini menggunakan bilangan bulat sederhana-turut Id di parameter kueri, dan pastikan user X dapat't melihat pengguna Y's data hanya dengan menebak mereka pengenal.

  • Menguji setiap query handler di aplikasi anda untuk memastikan bahwa mereka berfungsi hanya ketika berlaku, log-pada sesi cookie disajikan.

  • Nyalakan XSRF perlindungan di situs web stack, yang akan menghasilkan bentuk tersembunyi token parameter pada semua diberikan bentuk, untuk mencegah penyerang dari membuat link berbahaya yang akan mengirimkan formulir untuk pengguna yang tidak curiga.

  • Gunakan bcrypt --- dan tidak ada yang lain --- untuk menyimpan password hash.

Komentar (0)

I'm tidak ahli pada pengembangan Agile, tapi saya akan membayangkan bahwa mengintegrasikan beberapa dasar otomatis pen-test software anda membangun siklus akan menjadi awal yang baik. Saya telah melihat beberapa paket perangkat lunak luar sana yang akan melakukan dasar pengujian dan cocok untuk otomatisasi.

Komentar (0)

I'm tidak ahli keamanan, tapi saya pikir fakta yang paling penting anda harus menyadari, sebelum pengujian keamanan, adalah apa yang anda mencoba untuk melindungi. Hanya jika anda tahu apa yang anda mencoba untuk melindungi, anda dapat melakukan analisis yang tepat dari langkah-langkah keamanan dan hanya kemudian anda dapat mulai menguji mereka menerapkan langkah-langkah.

Sangat abstrak, aku tahu. Namun, saya pikir itu harus menjadi langkah pertama dari setiap audit keamanan.

Komentar (1)

Unit testing, Pertahanan Pemrograman dan banyak dari log

Pengujian Unit

Pastikan anda unit tes sedini mungkin (misalnya password harus dienkripsi sebelum dikirim, SSL terowongan kerja, dll). Ini akan mencegah anda programmer dari sengaja membuat program yang tidak aman.

Pertahanan Pemrograman

Saya pribadi menyebutnya Paranoid Pemrograman tapi Wikipedia tidak pernah salah (sarkasme). Pada dasarnya, anda menambahkan tes untuk fungsi-fungsi yang memeriksa semua masukan:

  • pengguna's cookies yang valid?
  • dia masih masuk saat ini?
  • apakah fungsi's parameter dilindungi terhadap SQL injection? (meskipun anda tahu bahwa input yang dihasilkan oleh fungsi anda sendiri, anda akan menguji pokoknya)

Penebangan

Log segala sesuatu seperti orang gila. Lebih mudah untuk menghapus log kemudian untuk menambahkan mereka. Pengguna memiliki login? Log itu. Pengguna found 404? Log itu. Admin diedit/dihapus posting? Log itu. Seseorang dapat mengakses halaman yang dibatasi? Log itu.

Don't heran jika file log anda mencapai 15+ Mb selama tahap pengembangan. Selama versi beta, anda dapat memutuskan mana log untuk menghapus. Jika anda ingin, anda dapat menambahkan sebuah flag untuk menentukan kapan suatu peristiwa tertentu dicatat.

Komentar (0)