Centang item yang ditandai dengan (*) menunjukkan bahwa item tersebut merupakan solusi mendasar terhadap masalah yang relevan, dan Anda harus berusaha sebaik mungkin untuk menyelesaikan konten ini. Item yang tidak diberi tanda (*) menunjukkan bahwa item tersebut tidak dapat sepenuhnya menghilangkan bahaya keselamatan, tetapi hanya masalah keselamatan yang dapat dihindari melalui metode ini.
injeksi SQL
(*) Gunakan fungsi pengikatan variabel SQL saat menggabungkan pernyataan SQL
(*) Jika database tidak menyediakan pengikatan variabel, Anda harus keluar dari semua variabel yang membentuk SQL dan tidak menampilkan pesan kesalahan secara utuh di browser.
Tetapkan izin yang sesuai untuk pengguna yang mengakses database.
Injeksi baris perintah sistem operasi
(*) Hindari penggunaan bahasa yang dapat memulai perintah shell. Jika Anda diizinkan untuk memulai perintah shell, Anda perlu memeriksa semua variabel dalam parameter fungsi untuk memastikan bahwa hanya operasi legal yang disertakan dan tidak memeriksa parameter nama jalur/ penjelajahan direktori.
(*) Jangan gunakan parameter yang dikirimkan dari luar secara langsung sebagai nama file.
(*) Batasi operasi pembukaan file ke direktori tetap dan larang nama file berisi jalur. Tetapkan izin akses yang benar untuk file di server web.
(*) Gunakan konten yang sulit ditebak sebagai ID sesi
(*) Jangan simpan ID sesi di URL
(*) Tetapkan atribut aman untuk cookie yang digunakan dalam protokol https
(*) Hasilkan sesi baru setelah login berhasil
(*) Setelah login berhasil, buat informasi rahasia selain ID sesi, dan periksa setiap kali Anda mengunjungi halaman. Jangan gunakan nilai tetap sebagai ID sesi.
Saat menyimpan ID sesi ke cookie, tetapkan tanggal kedaluwarsa Serangan skrip lintas situs (XSS)
Solusi ketika memasukkan konten HTML tidak diperbolehkan
(*) Semua keluaran ke halaman harus di-escape
(*) Hanya URL yang dimulai dengan "http://" atau "https://" yang diperbolehkan saat mengeluarkan URL
(*) Jangan membuat konten <script>…</script> secara dinamis
(*) Jangan membaca style sheet dari situs web eksternal. Solusi untuk memeriksa konten masukan ketika konten HTML diperbolehkan untuk dimasukkan.
(*) Parsing konten HTML masukan, buat pohon parsing, lalu ekstrak bagian non-skrip. Gunakan skrip untuk menghapus string yang relevan dalam konten HTML masukan
(*) Tentukan ulang atribut charset dari Content-Type di header HTTP respons. Untuk menghindari kebocoran informasi cookie, metode Trace harus dinonaktifkan dan atribut HttpOnly harus disetel untuk semua cookie pemalsuan lintas situs (CSRF)
(*) Semua halaman diakses melalui POST. Sepotong informasi dihasilkan secara acak di bagian tersembunyi dari halaman sebelumnya.
(*) Meminta kata sandi lagi sebelum menjalankan bisnis
(*) Konfirmasikan apakah Referer benar. Hanya jika sudah benar, lakukan operasi penting dan kirim email ke alamat email yang telah ditentukan sebelumnya.
Injeksi tajuk HTTP
(*) Jangan mengeluarkan header HTTP secara langsung, tetapi gunakan API keluaran informasi header yang disediakan oleh lingkungan yang sedang berjalan
(*) Ketika API tidak dapat digunakan, jeda baris pada informasi header masukan harus dilarang. Jeda baris pada semua masukan eksternal harus dihapus. Pencurian email (menggunakan beberapa cara untuk mengirim email ke alamat yang ditentukan oleh penyerang)
(*) Jangan gunakan parameter eksternal sebagai informasi header email. Jika Anda harus menggunakan parameter eksternal untuk mengatur informasi header, hapus karakter berbahaya.
Pernyataan hak cipta: Anda dapat mencetak ulang sesuka hati, tetapi penulis asli Charlee harus disebutkan saat mencetak ulang.
Tautan asli: http://tech.idv2.com/2008/04/19/secure-website-checklist/
Referensi strategi aplikasi khusus: Daftar Periksa Keamanan Praktik PHP