Pages

Subscribe:

Blogroll

Selasa, 25 Desember 2012

Isu keamanan client dan penyedia layanan(Server)


Keamanan merupakan keprihatinan bagi pengembangan setiap jenis aplikasi. Namun demikian, Web aplikasi mengungkapkan karakteristik tertentu yang harus diperhitungkan saat merancang keamanan mereka fungsi dan bahwa permintaan untuk teknik keamanan bahkan lebih komprehensif dibandingkan dengan jenis lain dari aplikasi. Misalnya, berbeda dengan program yang diinstal pada host tunggal, aplikasi web yang tersedia untuk umum melalui Internet, dimaksudkan untuk mencapai besar jumlah pengguna potensial. Jadi, misalnya otentikasi dan otorisasi pengguna memiliki untuk diterapkan secara berbeda dari single-user sistem. Keamanan istilah itu sendiri adalah penyedia cukup abstrak dan layanan dan klien dari aplikasi Web dapat memiliki pengertian yang berbeda itu. Hal ini, misalnya, termasuk masalah privasi, pencegahan menguping ketika pesan yang dipertukarkan melalui saluran yang dapat diakses publik, dan dapat diandalkan penyediaan jasa.
Seringkali, fokus utama dalam merancang aplikasi web terletak pada fungsi mereka, yang disebut logika bisnis, kegunaan intuitif mereka, dan kemampuan mereka untuk menarik pelanggan. Namun, mengobati masalah keamanan sekunder memiliki dampak pada keberhasilan (komersial) dari aplikasi Web sebagai baik. Klien berharap aplikasi Web menjadi aman sehingga data pribadi ditangani dengan hati-hati. Artinya, tidak dipercaya dan pihak ketiga berpotensi berbahaya harus dicegah dari mengakses informasi pribadi. Terlepas dari ini, penyedia layanan tidak boleh menyalahgunakan data pribadi, misalnya, dengan bertukar informasi kontak dengan bekerja sama penyedia tanpa persetujuan klien. Untuk penyedia layanan, risiko keamanan beberapa ada juga: jika penyerang berhasil mengeksploitasi kelemahan dalam implementasi layanan atau platform layanan yang mendasari, informasi bisnis penting seperti data tentang perintah, misalnya, nomor kartu kredit atau stok produk dapat diakses dan / atau dimodifikasi. Selain itu, ketersediaan layanan dapat dikurangi dengan cara ini. Dengan demikian, keamanan kerentanan dapat menyebabkan kerugian keuangan dan dampak hukum bagi kedua klien dan penyedia. Gambar 13-1 menggambarkan aspek yang berbeda dari keamanan yang biasanya berlaku untuk penyediaan aplikasi Web oleh penyedia layanan dan doa melalui klien.
1)                   Mengamankan komputer pengguna akhir dan data pribadi yang tersimpan di dalamnya. Klien komputer dan dokumen yang disimpan dalam sistem file harus dilindungi dari akses yang tidak sah melalui pihak ketiga yang mungkin berbahaya. Untuk klien itu adalah penting bahwa data pribadi, seperti informasi kontak atau nomor kartu kredit, yang dirahasiakan.
2)                   Mengamankan informasi dalam perjalanan. Menguping dan modifikasi pesan harus dicegah. Pesan aman juga mencakup otentikasi dan otorisasi dari berkomunikasi partai dan non penolakan pesan.
Mengamankan server dan data yang tersimpan di dalamnya. Ketersediaan layanan, terancam melalui denial-of-service (DoS) serangan, harus dipastikan. Selain itu, pihak yang tidak berhak memiliki harus dicegah dari mendapatkan akses ke informasi pribadi pelanggan dan karyawan dan sumber daya bisnis lebih lanjut lokal kritis, misalnya, database lokal.

1.   Aspek keamanan
E-commerce memiliki saluran pesan tidak aman, misalnya, Internet. dalam hal ini pertukaran keamanan pesan antara dua entitas, Alice dan toko buku, termasuk bahwa keduanya yakin satu sama lain dan yang memodifikasi data dalam transit dicegah. Selain pesan aman, privasi dan keamanan sumber daya lokal harus dilestarikan. 
a.       Kerahasiaan
Komunikasi rahasia berarti bahwa pertukaran data antara pelanggan dan penyedia tidak dapat dibaca oleh pihak ketiga. Enkripsi adalah fondasi teknologi pesan rahasia pertukaran melalui saluran komunikasi yang tidak aman. Pendekatan umum, misalnya, penggunaan saluran pribadi atau virtual private network (VPN).
b.      Integritas
Gagasan yang ketat dari integritas adalah bahwa tak seorang pun mampu memodifikasi informasi yang dipertukarkan. Ketika komunikasi aman, jaringan dapat diakses publik, pemalsuan tidak dapat dikesampingkan pada umumnya, tetapi setidaknya mungkin untuk mendeteksi modifikasi data.
c.       Non-repudation(penolakan)
Non-repudiation merupakan aspek penting dari kontrak elektronik ditempatkan. Pencetus pesan, misalnya, pelanggan memesan buku di sebuah toko online, seharusnya tidak dapat menyangkal perintah mereka ditempatkan.
d.      Otentikasi
Otentikasi adalah proses verifikasi identitas subjek orang (yang bisa juga menjadi aplikasi lain yang mencoba layanan atas nama pengguna manusia). otentikasi sering terjadi melalui mekanisme login / password. Sebagai teknologi seperti layanan web yang dirancang antar-organisasi aplikasi-untuk-aplikasi komunikasi dan tidak selalu bergantung pada interaksi pengguna manusia, otentikasi kunci publik semakin penting.
e.       Otorisasi
Otorisasi digunakan untuk menyimpulkan mana hak pengguna otentik diberikan. Otorisasi dapat bergantung pada identitas peminta dan atau pada karakteristik atribut seperti usia mereka (misalnya, mempertimbangkan sebuah toko video online). Daftar kontrol akses (ACL) adalah luas tetapi relatif tingkat rendah teknik untuk membentuk keistimewaan-ke-pengguna tugas dalam sebuah organisasi. Fleksibel Peran kontrol akses berbasis (RBAC) seperti yang dijelaskan dalam bab ini sangat cocok untuk scalable Web aplikasi.
f.        Ketersediaan
Menjamin ketersediaan aplikasi Web adalah relevansi ekonomi, sebagai downtime layanan biasanya menyiratkan kerugian finansial.
g.       Privacy
Privasi menuntut penanganan data yang dapat diandalkan, seperti informasi pribadi, misalnya, data kontak atau nomor kartu kredit, tetapi juga file yang tersimpan pada sistem file lokal. Data tersebut tidak boleh diakses kepada pihak ketiga yang tidak berwenang yang mungkin menyalahgunakannya untuk pencurian identitas. Aspek keamanan yang berbeda disebabkan oleh sifat kompleks aplikasi web, terutama kenyataan bahwa aplikasi web yang berpotensi tersedia untuk semua orang melalui Internet dan komunikasi yang berlangsung melalui saluran yang dapat diakses publik (tidak aman).

2.    Enkripsi, Digital Signature, dan Sertifikat.
Enkripsi adalah teknologi dasar untuk memungkinkan pesan aman (O'Neill 2003, Galbraith et al. 2002, Garfinkel 2002). Enkripsi (atau pengkodean) berarti bahwa dengan menggunakan fungsi matematika teks biasa berubah menjadi teks cipher. Dekripsi (atau mengartikan) menggambarkan sebaliknya proses, yaitu, transformasi kembali teks cipher ke dalam teks biasa asli. Paling algoritma kriptografi mengandalkan kunci sebagai barang rahasia untuk penyandian dan menguraikan. Tanpa pengetahuan tentang kunci masing-masing, itu adalah komputasi tidak layak untuk mendekripsi pesan, meskipun semua algoritma enkripsi serius tersedia untuk umum. Kriptoanalisis menggambarkan upaya dan dipekerjakan teknologi untuk memecahkan suatu enkripsi, misalnya, untuk menemukan cara untuk memecahkan enkripsi berdasarkan beberapa teks cipher dan beberapa teks biasa yang sesuai. Sebuah algoritma dikatakan kuat jika pencarian kekerasan, yaitu, pengadilan tombol apa saja yang mungkin, adalah kemungkinan serangan hanya dikenal. Kita membedakan antara algoritma enkripsi simetris dan asimetris.
a.       Symmetric Criptography
Menggunakan enkripsi simetris, penerima pesan menggunakan kunci yang sama untuk menghitung  dataran teks dari teks cipher sebagai pengirim yang digunakan untuk mengenkripsi itu.
b.      Asymmetric Cryptography
Sebagai asimetris istilah menyarankan, pengirim dan penerima menggunakan kunci yang berbeda untuk penyandian dan mengartikan. Setiap peserta memiliki sepasang kunci yang terdiri dari satu D kunci pribadi dan satu publik kunci E. Sedangkan kunci pribadi tidak terungkap, kunci publik yang berpotensi tersedia untuk semua orang. Biarkan (E, D) menjadi pasangan kunci publik / swasta book.store.com cf. contoh pada Gambar 13-5. Jika Alice ingin mengirim pesan m ke toko buku, ia menggunakan E untuk enkripsi. Cipher yang dihasilkan teks E (m) hanya dapat didekripsi menggunakan kunci book.store.com 's swasta D, yaitu, D (E (m)) = m.
c.       Digital Signatures
Ketika berkomunikasi melalui saluran yang dapat diakses publik, data modifikasi melalui pihak ketiga harus dicegah, atau paling tidak terdeteksi. Tanda tangan digital dapat digunakan untuk menjamin data yang integritas, untuk memberikan non-repudiation, dan otentikasi identitas. Tanda tangan digital bergantung pada hash algoritma dan kriptografi asimetris. Terkenal algoritma hash MD5 (Message Mencerna Algoritma 5, Rivest 1992) dan SHA-1 (Secure Hash Algorithm, Eastlake dan Jones 2001). Algoritma hash menghitung sepotong kecil data dari sebuah blok data yang mungkin jauh lebih besar. SHA-1 menghasilkan digest 160 bit blok data yang hingga 264 bit dalam ukuran. Digest yang dihasilkan adalah sebanding dengan sidik jari atau checksum dari blok data. Setiap modifikasi data masukan mengarah ke tombol hash yang sama sekali berbeda. Memiliki nilai hash dari sebuah pesan m, katakanlah h’ (m), maka komputasi sangat mahal untuk membuat pesan m (bermakna)? dengan h (m) = h (m’). Dengan demikian, hashing dapat digunakan untuk melacak merusak usaha ekstra sangat sedikit. Namun, hashing saja tidak dapat menjamin integritas pesan. Seorang "man in the middle" berbahaya masih dapat memodifikasi pesan dan pada saat yang sama mengganti kunci hash dengan, baru yang sesuai satu. Di sinilah enkripsi datang ke dalam bermain. Mari kita asumsikan Alice ingin memastikan integritas m pesannya. Dia pertama menghitung nilai hash masing, h (m).

Kamis, 04 Oktober 2012

Arsitektur Aplikasi Rekayasa Web


1. Perbedaan antara pattern dan framework
Pattern adalah solusi umum yang dapat digunakan kembali pada permasalahan umum yang sering terjadi pada software design. Design pattern bukan desain final yang dapat ditransformasikan secara langsung kedalam kode. Ini hanyalah deskripsi atau template untuk mengetahui bagaimana menyelesaikan permasalahan yang dapat digunakan pada berbagai macam situasi yang berbeda. Design pattern dari object-oriented secara tipikal menunjukkan hubungan dan interaksi antara kelas dan objek tanpa menspesifikasikan kelas atau objek dari aplikasi final yang terlibat didalamnya.
Sedangkan Framework adalah suatu struktur konseptual dasar yang digunakan untuk memecahkan atau menangani suatu masalah kompleks. Istilah ini sering digunakan antara lain dalam bidang perangkat lunak untuk menggambarkan suatu desain sistem perangkat lunak yang dapat digunakan kembali, serta dalam bidang manajemen untuk menggambarkan suatu konsep yang memungkinkan penanganan berbagai jenis atau entitas bisnis secara homogen.
2. Pengertian MVC dan struts
MVC (Model View Controler) adalah sebuah metode untuk membuat sebuah aplikasi web dengan memisahkan data dari tampilan dan cara bagaimana memprosesnya. Dalam implementasinya kebanyakan framework dalam aplikasi website adalah berbasis arsitektur MVC. MVC memisahkan pengembangan aplikasi berdasarkan komponen utama yang membangun sebuah aplikasi seperti manipulasi data, antarmuka pengguna, dan bagian yang menjadi kontrol dalam sebuah aplikasi web.
Struts merupakan salah satu java MVC web framework terpopuler yang menginspirasi banyak framework lain. Struts 2 merupakan penggabungan dari Struts dengan Webwork 2 sehingga menghasilkan framework yang lebih mudah digunakan dan lebih mencapai tujuan dari Struts dibuat. Struts merupakan aplikasi framework open source yang di designuntuk membantu para developer dalam membangun arsitekturaplikasi berbasis pada MVC (Model View Controller) , dimana design MVC sudah merupakan standard umum dalam membangunaplikasi Web anda dengan penggunaaan servlet Java dan JavaServer Pages (JSP) sebagai teknologinya.
3. Arsitektur dari codelgniter
CodeIgniter memiliki wiki yang memungkinkan memudahkan untuk menemukan dokumen yang relevan. CodeIgniter adalah aplikasi open source yang berupa framework dengan model MVC (Model View Controller) untuk membangun website dinamis dengan menggunakan PHP. CodeIgniter memudahkan developer untuk membuat aplikasi web dengan cepat dan mudah dibandingkan dengan membuatnya dari awal.
Ada beberapa kelebihan CodeIgniter dibandingkan dengan Framework PHP lain:
-          Performa sangat cepat : Codeigniter sangat cepat bahkan mungkin bisa dibilang codeigniter merupakan framework yang paling cepat dibanding framework yang lain.
-          Konfigurasi yang sangat minim: untuk menggunakan codeigniter bisa dengan setting standard, hanya perlu merubah sedikit saja file pada folder config.
-          Banyak komunitas: banyaknya komunitas CI memudahkan kita untuk berinteraksi dengan yang lain, baik itu bertanya atau teknologi terbaru.
-          Dokumentasi yang sangat lengkap : Setiap paket instalasi codeigniter sudah disertai user guide yang sangat bagus dan lengkap untuk dijadikan permulaan, bahasanya pun mudah dipahami.
 1)     index.php berfungsi sebagai controller depan, mnginisialisasi basic resource yang dibutuhkah untuk menjalankan CI.
2)     Router menganalisa HTTP request untuk menentukan apa yang harus dilakukan dengan HTTP request itu.
3)     Jika file cache masih ada , maka akan dikirim langsung ke browser, tanpa melewati eksekusi normal sistem.
4)     Keamanan, sebelum controller aplikasi di panggil, HTTP request dan data yang dikirim user, di filter untuk alasan keamanan.
5)     Controller memanggil model, librari inti , plugin, helper, dan resource lainnya yang di butuhkan untuk memroses request tertentu.
6)     View yang sudah diproses, dikirim ke browser sebagai hasil yang terlihat. Jika status caching ON, view akan disimpan di cache, jadi jika ada request yang sama, view itu bisa ditampilkan lagi.
3. Pengertian Integrasi sistem dan SOA
            Integrasi sistem merupakan salah satu konsep kunci dari sistem Informasi Manajemen. Berbagi sistem dapat saling berhubungan satu dengan yang lain dengan berbagai cara yang sesuai dengan keperluannya. Aliran informasi diantara sistem sangat bermanfaat bila data dalam file suatu sistem diperlukan juga oleh sistem yang lainnya, atau output suatu sistem menjadi input bagi sistem lainnya. Secara manual juga dapat dicapai suatu integrasi tertentu, misalnya data dari satu bagian dibawa kebagian lain, dan oleh petugas administrasi data tersebut digabung dengan data dari sistem yang lain. Jadi kalau secara manual maka derajat integrasinya menjadi tinggi.
Keuntungan utama dari integrasi sistem informasi adalah membaiknya arus informasi dalam sebuah organisasi. Suatu pelaporan biasanya memang memerlukan waktu, namun demikian akan semakin banyak informasi yang relevan dalam kegiatan manajerial yang dapat diperoleh bila diperlukan. Keuntungan ini merupakan alasan yang kuat untuk mengutamakan sistem informsi terintegrasi karena tujuan utama dari sistem informasi adalah memberikan informasi yang benar pada saat yang tepat. Keuntungan lain dari pengintegrasian sistem adalah sifatnya yang mendorong manajer untuk membagikan informasi yang dihasilkan oleh departemen bagiannya agar secara rutin mengalir ke system lain yang memerlukannya. Informasi ini kemudian digunakan lebih luas untuk membantu organisasi.
SOA merupakan suatu arsitektur dimana komponen-komponen dariaplikasi software yang telah dibuat dapat juga kita sediakan sebagai services di jaringan, sehingga dapat dipakai atau dimanfaatkan untuk keperluan lain oleh aplikasi yang berbeda-beda. Pada SOA, pembangunan suatu aplikasi baru dapat diibaratkan sebagai prosesmix-and-match, yaitu pertama kita akan menentukan aplikasi yang dibutuhkan, kemudian mencari komponen-komponen apa saja yang dapat dimanfaatkan yang telah tersedia di jaringan, dan selanjutnya kita menggabungkannya untuk menjadi suatu aplikasi yang sama sekali baru. Itulah mungkin gambaran singkat dari SOA, dan kenyataan sebenarnya tentunya tidaklah semudah dan sesederhana itu. Dan penjelasan SOA secara detil tidak akan dibahas pada kesempatan ini, mungkin pada artikel-artikel berikutnya.
Arsitektur berorientasi layanan (SOA) mencoba untuk berbagi sumber daya jaringan yang diperlukan untuk melayani dalam bentuk kemasan seragam dan akses, sehingga mereka tetap dalam distribusi fisik otonomi sementara mencapai pusat informasi "virtual" logika atas dasar pengelolaan terpadu secara transparan dan mengoptimalkan sumber daya seleksi, akses on-demand untuk perantara dan efektif dan partisipasi aktif untuk mendukung konfigurasi aplikasi pengguna.


Selasa, 25 September 2012

Tantangan Rekayasa Kebutuhan Aplikasi Web

1.     Multidisciplinarity
Pengembangan aplikasi Web memerlukan partisipasi para ahli dari berbagai disiplin ilmu. Misalnya seperti multimedia experts, content authors, software architects, usability experts, database specialists, atau domain experts. Heterogenitas dan multidisciplinarity stakeholder membuat pengembang tertantang untuk mencapai konsensus ketika mendefinisikan persyaratan.

2.     Tiadanya Stakeholder
Banyak pihak seperti pengguna Web potensial, masih belum diketahui selama kegiatan RE(Requirement Engineering). Manajemen proyek perlu mencari perwakilan yang cocok yang dapat memberikan persyaratan yang realistis. Misalnya, sering ada spektrum yang luas dari pengguna dalam proyek Web dan sulit untuk menemukan satu set yang wajar dari perwakilan.

3.     Kebutuhan dan Batasan “Mengambang”
Persyaratan dan kendala seperti sifat dari platform penyebaran atau protokol komunikasi sering lebih mudah untuk menentukan sistem perangkat lunak konvensional daripada aplikasi Web. Aplikasi Web dan lingkungan mereka sangat dinamis dan persyaratan dan kendala yang biasanya sulit untuk menstabilkan. Contohnya yaitu Sering terjadi perubahan teknologi inovasi seperti pengenalan platform pengembangan baru dan standar, atau perangkat baru bagi pengguna akhir.

4.     Lingkungan Operasional Sulit Diprediksi
Lingkungan operasional dari aplikasi web sangat dinamis dan sulit diprediksi. Pengembang merasa sulit untuk mengontrol faktor-faktor penting yang menentukan bagi pengguna mengenai kualitas dari suatu aplikasi Web. Misalnya, bandwidth perubahan mempengaruhi waktu respon dari aplikasi mobile, tetapi berada di luar lingkup tim pengembangan (Finkelstein dan Savigni 2001).

5.     Pengaruh Sistem Warisan
Pengembangan aplikasi Web ditandai dengan integrasi komponen perangkat lunak yang ada seperti komersial dari produk rak atau perangkat lunak open source. Secara khusus, pengembang Web seringkali menghadapi tantangan untuk mengintegrasikan sistem warisan, misalnya saat membuat sistem TI yang ada dari sebuah perusahaan dapat diakses melalui Web. Pengembang sering diminta untuk menggunakan komponen yang ada untuk alasan ekonomi. Komponen yang perlu diintegrasikan sangat mempengaruhi persyaratan dan gaya arsitektur dari sistem masa depan.

6.     Pentingnya Aspek Kualitas
Aspek kualitas sangat penting karena menentukan keberhasilan suatu aplikasi Web (Grunbacher et al. 2004). Contohnya termasuk kinerja dari aplikasi Web dan keamanan dalam e-commerce, ketersediaan, atau kegunaan. Meskipun aspek kualitas sangat penting, pengembang juga masih harus berurusan dengan masalah spesifikasi yang tepat dari persyaratan mutu yang seringkali sulit atau bahkan sia-sia sebelum sistem sebenarnya dibangun. Sebagai contoh, waktu respon dari aplikasi Web tergantung pada banyak faktor yang berada di luar kendali dari tim pengembangan. Pendekatan yang layak untuk mendefinisikan persyaratan mutu adalah untuk menentukan kriteria untuk tes penerimaan menunjukkan apakah persyaratan terpenuhi atau tidak.

7.     Kualitas User Interface
Kualitas dari user interface adalah aspek lain keberhasilan aplikasi Web. Ketika aplikasi Web berkembang pengembang perlu menyadari mengenai istilah (I Know It When I See It) IKIWISI: pengguna tidak akan dapat memahami dan mengevaluasi aplikasi Web dengan hanya melihat model abstrak dan spesifikasi, melainkan mereka perlu bereksperimen dengan itu. Hal demikian sangat penting untuk melengkapi definisi dan deskripsi persyaratan dengan menambahkan prototipe skenario aplikasi (Constantine dan Lockwood 2001).

8.     Kualitas Contents
Banyak metode tradisional Requrement Engineering mengabaikan konten Web, meskipun merupakan aspek yang sangat penting dari aplikasi Web. Selain masalah teknologi perangkat lunak, pengembang harus mempertimbangkan konten, khususnya pada penciptaan dan pemeliharaan. Dalam konteks Requirement Engineering sangat penting untuk menentukan kualitas yang dibutuhkan dari konten. Karakteristik kualitas yang penting meliputi akurasi, objektivitas, kredibilitas, relevansi, aktualitas, kelengkapan, atau kejelasan (Strong et al. 1997). Content Management Systems (CMS) penting untuk keuntungan sistem dan memungkinkan konten ringkas yang konsisten dengan memisahkan konten dari tata letak, dan menawarkan alat editing konten.

9.     Kurangnya Pengalaman Developer
Banyak dari teknologi yang mendasari dalam aplikasi Web masih cukup baru. Pengalaman dengan alat pengembangan teknologi, standar, bahasa, dll dapat menyebabkan perkiraan yang salah saat menilai kelayakan dan biaya pelaksanaan persyaratan.

10.Tanggal Delivery Perusahaan
Proyek Web banyak desain untuk jadwal proyek, di mana semua kegiatan dan keputusan harus memenuhi batas akhir proyek akhir. Perundingan dan prioritas kebutuhan sangat penting dalam keadaan seperti ini (Boehm et al. 2001).