Ringkasan UAS Web Programming

May 20, 2019 | Author: kamal izzat | Category: N/A
Share Embed Donate


Short Description

Ringkasan uas pelajaran web programing, tungkat kuliah...

Description

Ringkasan UAS Web Programming Programming

1. Autentikasi adalah proses untuk mengindentifikasi seseorang, biasanya berdasarkan username atau password. 2. Autentikasi berfungsi untuk pembuktian identitas bahwa pelaku adalah benar – benar – benar  benar pelaku. 3. Contoh autentikasi : Ketika user login, user menginput username dan password. Data username dan password yang diinput, dicek ke database apakah ada dan cocok. Jika cocok, maka user bisa mengakses ke homepage dan bisa menggunakan lebih jauh fitur dari sebuah aplikasi.  



4. Pada laravel, autentikasi user bisa menggunakan Auth::attempt. Contoh : If(Auth::attempt(array(‘email’=>$email, ‘password’=>$password))){ Return Redirect::intended(‘dashboard’); } 5. Kondisi pada authenticated user : Menentukan jika user terotentikasi  menentukan jika user telah login ke aplikasi atau belum. Otentikasi user kemudian mengingat mereka. 



Timothy Orvin Edwardo –  LK01  LK01 –  1901456205  1901456205











Menentukan jika user otentikasi lewat “Remember”  bisa menggunakan method untuk menentukan bahwa user diotentikasi dengan “remember me” cookie. Menggunakan Menggunaka n method Auth::viaRemember() Otentikasi user dengan kondisi  bisa menambahkan kondisi extra untuk otentikasi query. Akses logged in user  ketika user diotentikasi, kita bisa akses user model / record. Disini kita juga bisa validasi credentials menggunakan method Auth::validate(). Logging user untuk single request  menggunakan once method untuk log user ke aplikasi untuk single request. Tidak ada session atau cookie yang diutilisasi. Methodnya Auth::once($credentials). Logout user  keluar dari akunnya. Menggunakan method : Auth::logout().

6. Selain itu, kita juga bisa secara manual login user. Disini kita login existing user ke aplikasi menggunakan login dengan instance. Contoh : $user = User::find(1); Auth::login($user); Ini sama saja dengan login user melalui credentials menggunakan attempt method. 7. Http basic authentication : Protect route dengan HTTP basic  menggunakan filter kolom email pada user record ketika otentikasi. Jika ingin pakai kolom lain, bisa pass nama kolom sebagai parameter pertama. 

Timothy Orvin Edwardo –  LK01  LK01 –  1901456205  1901456205



Setup HTTP basic filter  bisa menggunakan HTTP basic authentication tanpa setting user identifier cookie pada sesi dimana berguna untuk autentikasi API. Disini menggunakan Route::filter(‘basic.once’, function(){ Return Auth::onceBasic(); });

8. Validasi  proses memastikan bahwa data yang dimasukkan sesuai dan benar. Disini mengecek kebenaran data, kebermaknaan, dan keamanan data yang dimasukkan kedalam sistem. Contoh validasi : Validasi nama harus berupa kumpulan huruf, tidak boleh mengandung angka. Validasi password harus mengandung huruf kapital, karakter spesial, serta minimal 8 digit. Validasi input tanggal harus dalam format dd/mm/yyyy. Contoh pada laravel untuk validasi nama harus minimal 5 karakter dan maximal 20 karakter : 



 

$this->validate( [‘nama’=>min:5 | max:20] ); 9. Validasi password di laravel  bisa menggunakan method Password::validator() dimana disini menerima closure. Dengan closure ini, kita bisa memilih validasi password yang kita inginkan. Disini juga tidak perlu verifikasi apakah password match, karena dilakukan secara otomatis oleh framework. Contoh : Password::validator(function($credentials){

Timothy Orvin Edwardo –  LK01 –  1901456205

Return strlen($credentials[‘password’]) >= 6; }); 10. Security  mekanisme yang dilakukan sebagai keamanan dalam sistem komputer dan aplikasinya. Disini yang dijaga keamanannya antara lain perlindungan informasi, pemeliharan ketersediaan. 11. Pada laravel, beberapa hal yang bisa diterapkan untuk security adalah : Protecting routes  route filter bisa digunakan untuk otentikasi user untuk akses route. Laravel menyediakan filter auth dan didefinisikan pada app/filters.php. Contoh : Route::get(‘profile’,array(‘before’=>’auth’,function(){ //hanya user terotentikasi yang bisa masuk })); CSRF protection  ini berfungsi untuk protect aplikasi dari cross – site request forgeries. Disini dilakukan hal berikut :  Memasukkan CSRF token ke form  Validasi CSRF token Route::post(‘register’,array(‘before’=>’csrf’,function(){ Return ‘Valid CSRF token’; })); Password reminder dan reset  ini harus dilakukan dengan benar agar jika seseorang mengaku lupa password, yang kita ingatkan adalah orang yang benar memiliki sebuah akun tersebut, bukan orang lain. Dilakukan menggunakan : 





Timothy Orvin Edwardo –  LK01 –  1901456205









Model dan tabel  laravel menyediakan method untuk mengirim password reminder dan password reset. o Verifikasi user model implement ke Illuminate\Auth\Reminders\RemindableInterface o User model yang sudah termasuk dalam framework sudah implementasi interface ini. o Menggunakan Illuminate\Auth\Reminders\RemindabeTrait untuk include method yang dibutuhkan untuk implement interface. Implementasi RemindableInterface  mengimplementasikan RemindaleInterface, kemudian menggunakan use RemindableTrait. Generate Reminder Table Migration  tabel harus dibuat untuk menyimpan password reset token. Untuk generate migration tabel ini, eksekusi auth:reminderstable di command artisan. php artisan auth:reminders-table php artisan migrate Password Reminder Controller o Menggunakan php artidan auth:reminderscontroller o Controller ini sudah punya getRemind method yang handle memperlihatkan password reminder form. o Membuat password.remind di form. Contoh :

Timothy Orvin Edwardo –  LK01 –  1901456205

o

o

o

o

12. 





Selanjutnya, method postRemind handle mengirim password reminder e-mail ke user. Jika sukses, maka status message akan flash ke sessions. Jika gagal, error message akan flash. Dengan postRemind controller, kita bisa modifikasi message instance sebelum dikirim ke user. Password reset  menggunakan password.reset. Disini kita menggunakan method postReset, kemudian di view meminta inputan email dan password baru serta bisa ditambahkan konfirmasi password dan tombol untuk reset password. Method postReset berfungsi mengganti password di storage. Closure melewati Password::reset, kemudian set password atribut di user dan memanggil save method. Jika sukses reset, maka user didirect ke root aplikasi.

Cara secure aplikasi kita (khususnya aplikasi web) : Autentikasi  proses pembuktian identitas seseorang. Contohnya : login dengan username dan password Autorisasi  proses memberikan wewenang ke objek di aplikasi kepada seseorang. Sehingga disini kita bisa meminimalisir terjadinya penyalahgunaan wewenang dalam aplikasi. Encryption  proses mengamankan suatu informasi dengan membuat informasi tersebut tidak dapat dibaca tanpa

Timothy Orvin Edwardo –  LK01 –  1901456205











13. 



pengetahuan khusus. Pada Laravel, autentikasi memberikan fasilitas enkripsi AES yang kuat melalui mcrypt PHP extension.  Contoh encrypt value $encrypted = Crypt::encrypt(‘secret’);  Contoh decrypt value $decrypted = Crypt::decrypt($encryptedValue); Validasi data input  menyaring data yang masuk. Disini validasi data dalam kode PHP dan JavaScript. Menjaga dari serangan CSRF (Cross Site Request Forgery)  penyerang biasa mengelabui korban untuk memuat informasi sensitif atau melakukan transaksi tanpa sepengetahuan. Biasanya ini terjadi pada menggunakan GET. Menjaga serangan dari SQL injection  seringkali terjadi penyuntikkan atau penyisipan SQL berbahaya. Menghindari hal ini, kita menggunakan parameter untuk pembersihan dari karakter yang tidak diizinkan. Melindungi file system  menulis kode sedemikian rupa agar tidak ada operasi yang menempatkan sistem file dalam resiko. Disini juga dilakukan pembatasan layanan file dari direktori tertentu saja. Melindungi data session  melakukan enkripsi informasi yang disimpan dalam sesi. Testing environment : Ketika running test, laravel secara otomatis set konfigurasi environment untuk testing. Laravel secara otomatis konfigurasi session dan cache ke array driver ketika testing. Tidak ada session atau cache data bertahan saat testing.

Timothy Orvin Edwardo –  LK01 –  1901456205

14. 





15. 

Mendefinisikan dan menjalankan test : Gunakan make:test artisan command (php artisan make:test UserTest) Command ini menempatkan UserTest class di test directory. Kita bisa definisikan test method seperti menggunakan PHPUnit. Untuk menjalankan test, tinggal eksekusi phpunit command dari terminal.

Testing aplikasi : Interaksi aplikasi  cek apakah ketika membuat request ke aplikasi akan berjalan. Contoh : test link, test forms, test attachment.

Timothy Orvin Edwardo –  LK01 –  1901456205



Click Link  ketika link di klik, kita sampai di page yang benar.



Form  bisa tes interaksi dari semua input form.



Method yang tersedia untuk interaksi aplikasi :

Timothy Orvin Edwardo –  LK01 –  1901456205



Testing JSON API’s  testing API JSON dan responnya, contohnya method get, post, put, patch, delete yang digunakan untuk request berbagai HTTP verb. Method seeJson konversi array ke JSON dan verifikasi fragmen JSON terjadi di semua tempat didalam response JSON yang direturn oeh aplikasi. Tes nya akan lewat selama fragmen yang diberikan ada.



Verify exact JSON match (gambar bawahnya)  verifikasi array yang diberikan exact match ke JSON. Pakai method seeJsonEquals.

Timothy Orvin Edwardo –  LK01 –  1901456205



Verify structural JSON match  verifikasi JSON response ke struktur spesifik. Pakai method seeJsonStructure. Juga bisa pakai notasi * untuk assert returned JSON structure punya list dimana tiap item list mengandung atribut yang ditemukan di set value (lihat gambar 2). Bisa pakai nested * notasi untuk assert setiap user di respon JSON mengandung attribute tersebut dan tiap pet di tiap user mengandung set attribut itu juga (lihat gambar 3)

Timothy Orvin Edwardo –  LK01 –  1901456205

Timothy Orvin Edwardo –  LK01 –  1901456205



Session / authentication  Test apakah session / authentication bekerja.  Set session data ke array yang diberikan dengan method withSession()



Penggunaan session adalah untuk maintain user state seperti user yang terautentikasi. Disini kita pakai method actingAs untuk autentikasi user yang diberikan sebagai user saat ini.

Timothy Orvin Edwardo –  LK01 –  1901456205





Custom HTTP request  Jika ingin membuat custom HTTP request ke aplikasi dan mendapat full Illuminate\Http\Response object kita pakai call method.





Kita juga bisa spesifikasikan guard yang mana yang harus digunakan untuk autentikasi user yang diberikan dengan passing nama guard sebagai argumen kedua ke actingAs method.

Jika kita membuat POST, PUT, PATCH request, kita bisa pass array input data dengan request. Data akan tersedia di route dan controller yang ada visa request instance.

PHPUnit assertions

Timothy Orvin Edwardo –  LK01 –  1901456205

Timothy Orvin Edwardo –  LK01 –  1901456205



Mocking  Ketika membuat heavy use laravel event system, kita mungkin berharap untuk mock /silent event tertentu untuk testing.  Contoh : jika kita testing user registration, kita mungkin tidak ingin semua event UserRegistered firing, seperti email welcome.  Laravel menyediakan method expectsEvents untuk verifikasi event yang mana yang akan kita fire, tetapi menghindari handler lain untuk event tersebut untuk berjalan.



Bisa juga pakai doesntExpectEvents untuk verifikasi event yang diberikan tidak fired.



Jika ingin menghindari semua event handler berjalan, kita gunakan withoutEvents method.

Timothy Orvin Edwardo –  LK01 –  1901456205



Mocking jobs  test route / controller dalam isolasi  – set apart dari job’s logic. Kita bisa test job itu sendiri dalam test class terpisah. Disini ada method expectsJobs yang verifikasi expected job dikirim, tapi  job itu sendiri tidak dieksekusi.



Mocking facades  kita bisa mock call ke cache facades menggunakan method shouldReceive yang akan return instance Mockery mock. Sejak facades sebenarnya telah resolved dan dimanage oleh laravel service container, mereka bisa di tes dibanding static class biasa.

Timothy Orvin Edwardo –  LK01 –  1901456205

16. 



 

17. 



Key factor untuk merancang model bisnis : Customer  entrepreneur harus mampu mengerti apa yang customer akan lakukan. Value creation dan capture  menguji berapa banyak value yang produk kita berikan ke customer dan kapan. Lalu tentukan bagaimana cara capture value yang cocok dengan baik. Kompetisi  identifikasi apa kompetisi yang terjadi. Distribusi  memastikan channel distribusi memiliki insentif baik untuk menjual produk kita. Tipe – tipe umum model bisnis : One time up front charge plus maintenance  customer membayar biaya besar didepan untuk produk, kemudian boleh memilih untuk melakukan upgrade / maintenance produk dengan recurring fee. Cost plus  customer membayar beberapa persen lebih besar dari biaya membuat produk.

Timothy Orvin Edwardo –  LK01 –  1901456205











Hourly rates  lebih cocok untuk service firms. Contoh : sewa mobil. Subscription / leasing  pembayaran per periode waktu. Contoh : tahunan atau bulanan. Licensing  memberikan lisensi ke properti kita ke customer dan menerima royalty. Tidak harus membuat investasi besar pada produksi dan distribusi. Advertising  menggunakan pihak ketiga untuk akses kepada customer. Usage based  customer membayar sesuai pemakaian saja diukur dengan pengukuran tertentu.

18. Ketika kita telah menentukan model bisnis, tidak mudah untuk mengubahnya. Untuk itu, pilih model bisnis yang membedakan kita dari kompetitor dan beri kelebihan dibanding kompetitor. 19. 

Reordering dan nesting items : Jika model kita memiliki field yang proper, bisa pakai reorder. Hanya perlu enable reorder di konstruktor EntityCrudController. Parameternya adalah kolom db yang ingin ditampilkan di elemen dan banyaknya level yang ingin di nesting. Disini MAX_TREE_LEVEL adalah maximum number dari elemen nesting dari parent. Jika infinit level, set ke 0.

Timothy Orvin Edwardo –  LK01 –  1901456205

20. 

21.  

Media library (file manager) : Menggunakan elFinder. Ini terintergrasi di sistem ke : > TinyMCE (sebagai CRUD “tinymce” fieldtype) > CKEditor (sebagai CRUD “ckeditor” fieldtype) > CRUD “browse” fieldtype > standalone, di your-project/admin/elfinder route (Ex : for the integration, barryvdh's laravel-elfinder package is used)

Detail row – revision export buttons : Detail row memberikan info detail dari CRUD tabel view Ketika kita tekan tombol + akan terlihat semua row dan ketika diklik detail akan keluar informasi tambahan

Timothy Orvin Edwardo –  LK01 –  1901456205



Caranya :  Klik AJAX request yang dikirim ke entity/{id}/details route, yang memanggil showDetailsRow() di EntityCrudController.  Semuanya yang di return method ini dimunculkan di detail row. Kita bisa overwrite method ini untuk memunculkan info di detail row.  Izinkan fungsionalitas : 

Izinkan akses ke semua users :



Overwrite method ini

atau yang secara langsung





memanggil showDetailsRow($id). Revision mengizinkan kita store semua perubahan entry dalam tabel dan revert ke value tertentu. Bekerja seperti sistem backup dan accountability system untuk admin. Ketika diizinkan, akan memperlihatkan tombol lain di table view diantara edit dan delete. Setelah itu, tombol ini buka page lain yang mengizinkan admin untuk melihat perubahan dan siapa yang melakukan.

Timothy Orvin Edwardo –  LK01 –  1901456205





Caranya :  Buat revision table (cpvendor/venturecraft/revisionable/src/migrations/2 013_04_09_062329_create_revisions_table.php database/migrations/ && php artisan migrate)  Gunakan venturecraft / revisionable didalam model. Jika menggunakan bootable trait lain, pastikan override method tersebut didalam model. (namespace MyApp\Models; class Article extends Eloquent { use \Backpack\CRUD\CrudTrait, \Venturecraft\Revisionable\RevisionableTrait; // If you are using another bootable trait the be sure to override the boot method in your model public static function boot() { parent::boot(); } })  Di dalam EntityCrudController, izinkan akses revision. $this->crud->allowAccess('revisions');  Kalau mau menambahkan table view agar load lebih cepat. $this->crud->with('revisionHistory'); Export data tabel ke pdf, xls, csv, hanya menambahkan $this->crud->enableExportButtons(); di constructor.

Timothy Orvin Edwardo –  LK01 –  1901456205

22.  









Extras (fake field, stored sebagai JSON di database) Definisikan beberapa field sebagai fake. Didalam database valuenya tidak di store ke meta_title, meta_description, meta_keywords. Mereka akan distore sebagai kolom meta di array JSON. Jika store_in tidak di define, maka akan distore di kolom ekstra. Jika kita tidak memilih kolom lain selain extra, definisikan fakeColumns didalam model. Haruslah sebuah array of columns dimana kita store fake fields. Gunakan : Entity::find(1)->withFakes();

Timothy Orvin Edwardo –  LK01 –  1901456205

23. 

24. 



Column, field, dan order : Bisa gunakan beforeColumn, afterColumn, beforeField, afterField untuk mengubah urutan field setelah fact.

Translatable models dan multi language CRUD : Harus memakai MySQL 5.7 + atau PosgreSQL dengan JSON column support. Install spatie/laravel-translatable

Timothy Orvin Edwardo –  LK01 –  1901456205





25. 

Buat semua kolom yang ingin di translate, di JSON atau TEXT. Gunakan translation trait di model dan definisikan field apa yang bisa di terjemahkan didalam properti $translatable.

Tabbed forms dan inline error : Bisa split input create / edit ke multiple table

Timothy Orvin Edwardo –  LK01 –  1901456205





Dalam menggunakan fitur ini kita harus specify tab name untuk tiap field.

Sebagai tambahan ke top error (grouped), form backpack (create dan edit) bisa memperlihatkan highlight tiap input yang error. Bisa diatur didalam crud.php. Ini bisa meningkatkan admin UX ketika membuat kesalahan

Timothy Orvin Edwardo –  LK01 –  1901456205

26. 



27. 



Customize view untuk CRUD panel : Jika kita ingin membuat custom create.blade.php, bisa overwrite create method. Lakukan hal yang sama untuk edit, list, revision, reorder. Bisa specify custom view di setup() method :

Custom CSS dan JS untuk operasi CRUD : Disini kita bisa meletakkan operasi custom javascripts dan styles. Ada di folder public/vendor/backpack/crud. Dalam folder tersebut kita bisa menempatkan operation code tanpa bloating general file CSS, JS, blade files.

Timothy Orvin Edwardo –  LK01 –  1901456205

28. 



Extra CRUD routes : Kita bisa pakai method with() dalam CRUD::resource untuk mengatur route dengan lebih baik. Contoh : CRUD::resource(‘teams’, ‘Admin\TeamCrudController’)>with(function() { // add extra routes to this resource Route::get('teams/ajax-name-options', 'Admin\TeamCrudController@nameOptions'); Route::get('teams/ajax-category-options', 'Admin\TeamCrudController@categoryOptions'); });

Timothy Orvin Edwardo –  LK01 –  1901456205

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF