2015-03-02

CURHAT 2 : CORE DAN APLIKASI PART 1


Mari kita berfikir bagaimana site bekerja terutama saat menarik database. Normalnya site akan membuka koneksi ke database lalu menjalankan query. Dan kemudian hal sama terjadi berulang kali. Kali ini kita akan memanfaatkan Aplikasi non situs. Bayangkan apa yang kamu dapat bila aplikasi ini mampu akses database?!? bisa terjadi kebocoran!

Kebocoran ini salah satunya kita sebuah sebagai DoS.
Denial-of-service attack
In computing, a denial-of-service (DoS) or distributed denial-of-service (DDoS) attack is an attempt to make a machine or network resource unavailable to its intended users.

A DoS attack generally consists of efforts to temporarily or indefinitely interrupt or suspend services of a host connected to the Internet.
Bila yang melakukan request lebih dari 1 tempat (aplikasi), bayangkan bahayanya. Dari sinilah kita melihat sebuah fakta sederhana yaitu
"sebuah aplikasi butuh data untuk berjalan secara dinamis"



dan tambahan, data tak selalu harus berasal dari database (langsung). Dapat memakai perantara seperti server yang dituju. Yang mana server yang dituju dapat memberikan data yang dibutuhkan. Namun jangan lupa bahwa keamanan menjadi isu disini.

Keamanan bila melalui server perantara adalah
  • data hanya di ambil oleh pihak yang berhak
  • format data bila diambil saat valid
  • format data bila yang diambil tidak valid
  • dan cara menangani request dari client/aplikasi

Berangkat dari keamanan data, kita menyebutkan sistem ini CORE-APLIKASI dimana CORE adalah datanya dan juga 'satu-satunya' yang dapat membaca database. juga menutup kemungkinan dari luar tidak dapat akses ke database. Sebelum membuat konsep CORE, berikut adalah step yang harus dikerjakan
  • - tampilan
  • - mengatur server / database
  • - rule masuk ke core
  • - Pengaturan Core dan pencatatan

TAMPILAN

penjelasan tampilan disini lebih kepada bagaimana klien mendapatkan tampilan. Yang terpenting disini adalah bagaimana dari sisi aplikasi/web tidak melakukan koneksi langsung ke database, karena core yang akan melakukannya. Kemudian format request dari tampilan / aplikasi kepada core, semua itu akan jelas dibahas di bagian rule.

MENGATUR DATABASE (SERVER)

Alasan Server database dapat diatur adalah mencegah hal-hal yang tak di inginkan terjadi saat menjalankan query. Baik query seperti SELECT, INSERT hingga DELETE. Semua itu harus di perhatikan! Dalam program atau sistem yang lebih komplex, user untuk membaca dan menulis itu dibuat berbeda. Tetapi dari hasil melihat dan memperhatikan. Kita lebih condong memakai 1 user untuk semua!
Tapi dibalik layar terdapat lebih dari 1 user namun untuk user yang kita gunakan pada core hanya 1 yang mampu melakukan semua fungsi! Namun fungsi yang digunakan hanya terbatas pada database tertentu saja!! Sehingga keamanan dapat terjamin!
Dalam database (mysql), kita bisa memiliki 3 user, namun user yang digunakan hanya 1. Kecuali bila membuat 1 user tambahan yang bertugas untuk melakukan pencatatan /history. Hal ini akan dibahas pada bagian pencatatan.

RULE

Peraturan untuk akss CORE sangat diperlukan. Hal yang pertama harus difahami adalah
  • yang mengakses core bukan dari web saja
  • data bukan bersumber dari server yang sama dengan core
  • data yang dikirim harus dalam keadaan aman

Sehingga yang akan dilakukan adalah
  • memastikan data yang dikirim dalam bentuk aman. Disini biasa kita memakai POST! Namun cara ini adalah metode karena server yang saya gunakan adalah PHP , bila dari sistem/bahasa lain dapat disesuaikan ! namun yang umum adalah POST
  • memastikan parameter yang digunakan haruslah memiliki format yang standar. Khusus untuk data mungkin dapat berubah tetapi untuk rangka dasarnya harus ada kesamaan.
  • Adanya Token. Token adalah angka/huruf yang harus dikirim oleh aplikasi agar dapat masuk ke sistemnya. Biasa berisi data usernya. kita bisa asumsikan token adalah pengganti dari session pada web.
  • data yang dikirim harus ditentukan formatnya! apakah XML atau JSON? masing-masing memiliki keuntungan dan kekurangan, pada dasarnya data yang dikirim harus dalam bentuk array. Rekomendasi paling mudah adalah json, karena data akan dikirim dengan bentuk string. XML sendiri adalah bentuk kuno dan biasanya digunakan untuk server yang berbasis JAVA
  • Memastikan apakah yang melakukan request dari aplikasi yang benar. Akan bagus apabila saat mengirim request, sekaligus mengirimkan siapa yang melakukan request dalam bentuk id aplikasi
  • Memastikan hak yang melakukan request. Disini dengan adanya token saja, kecuali ada alasan lain meletakkan user dan password (enkripsi) dalam parameternya.
  • Format kembalian bila error
  • format kembalian bila benar

PENGATURAN SERVER CORE

Pengaturan server lebih condong kepada pengaturan dari sisi keamanan Server seperti :
  • berapa max data yang dapat dikirim dalam waktu 1x kirim. Biasa berkaitan dengan total data yang dikirim! hal ini nantinya bisa berkaitan dengan kemampuan kirim gambar / dokumen via Aplikasi ke CORE
  • ERROR yang akan dikeluarkan bila dari sisi CORE tidak mengembalikan hasil
  • dan lain-lain

PENCATATAN

Untuk core yang selalu di akses terus menerus. Terutama di akses oleh pihak yang tak di inginkan, kita harus siap meletakkan pencatatan yang menunjukkan
  • waktu melakukan pencatatan
  • siapa yang masuk ke sistem
  • apa yang dimasuki (URL)
  • parameter yang dimasukkan
  • lama proses
  • yang didapat saat proses dilakukan
  • error yang terjadi. Walau dalam bentuk peringatan
  • respon yang diberikan

Kita dapat membagi pencatatan ini kepada beberapa bagian. Penulisan laporan ini akan lebih bagus bila diketik dalam format tanpa ada 'break':
Info. dapat berupa penjelasan apa yang dilakukan dan statusnya.
debug. melihat isi dari nilai data atau request yang melakukan
error. error yang terjadi saat menjalankan proses, biasa dilakukan/diletakkan di saat proses query
notice. sama seperti di atas, namun lebih kepada peringatan
summary. Penjelasan lebih detail, biasa jarang digunakan karena tidak memiliki format yang mudah dibaca.

Beberapa list di atas tidak semuanya harus/wajib dimasukkan kedalam pencatatan. Normalnya respon yang diberikan tidak selalu masuk pencatatan, tetapi lihat dari sisi berbeda. lebih baik mencatat respon dari sisi keamanan. Respon disini tidak selalu respon positif namun juga respon negatif. Disarankan selain mencatat respon, catat darimana sumber request berasal termasuk waktunya.

KESIMPULAN

apapun program yang anda kerjakan, utamakan keamanan dan juga preventif bila software/server anda terkena masalah.

Tidak ada komentar: