IDFreelance - Indonesia Freelance Programmer and Web Designer

Add to Technorati Favorites
 
Content

 

Pengamanan Akses Login dalam Visual Studio

6 January, 2009

keamanan login visualstudio Pengamanan Akses Login dalam Visual StudioSudah bukan merupakan rahasia lagi bahwa suatu aplikasi memerlukan pengamanan untuk User dan Password yang digunakan. Rahasia yang mungkin belum diketahui adalah, bagaimana password tersebut bisa dijaga dan disimpan dengan aman.

Password sebaiknya tidak disimpan dalam database sebagai string, sebaiknya, diubah ke suatu nilai yang tidak mudah dikenali dan unik. Nilai seperti ini disebut hash. Algoritma hashing diberikan agar setiap string yang di hash ke dalam nilai yang unik akan selalu berbentuk hash.

Ketika user memberikan suatu password, password tersebut sebaiknya di hash ke nilai yang unik, dan nilai unik tersebut yang sebaiknya disimpan dalam database. Ketika user login dengan menggunakan password, password tersebut bisa di hash kembali menggunakan algoritma yang sama, Nilai hasilnya bisa dibandingkan dengan nilai hash yang tersimpan dalam database untuk validasi login.

Nilai yang telah di hash tidak bisa di un-hash, jadi tidak ada cara untuk memperoleh password asli dari nilai yang sudah di hash. Cara ini memberikan level keamanan tambahan, karena, jika seseorang mengambil password yang telah di hash dari database, password tersebut tidak bisa diubah kembali ke format aslinya. Resikonya adalah, jika user lupa dengan passwordnya, password baru akan diberikan.

Library System.Security.Cryptography dalam Framework .NET menyediakan beberapa class yang menyediakan hash. Dua buah skema hashing yang disediakan dalam library ini adalah:

1. MD5 : Message Digest 5 (MD5). Menggunakan algoritma MD5 untuk meng-hash suatu nilai, seperti password. Algoritma ini memberikan performa yang baik dibandingkan dengan SHA1.

2. SHA1: Secure Hash Algorithm-1 (SHA1). Menggunakan algoritma SHA1 untuk meng-hash suatu nilai, seperti password. Algoritma ini memberikan keamanan data yang lebih baik dibandingkan dengan MD5.

Suatu password, contoh : “password” akan memiliki hash yang akan terlihat seperti: W6ph5Mm5Pz8GgiULbPgzG37mj9g=.

Kode berikut menggunakan algoritma SHA1 untuk meng-hash suatu password:

Dalam VB:

Imports System.Security.Cryptography
Public Function ComputeHash(ByVal textToHash As String) As String
    Dim SHA1 As SHA1CryptoServiceProvider = New SHA1CryptoServiceProvider
    Dim byteValue As Byte() = System.Text.Encoding.UTF8.GetBytes(textToHash)
    Dim byteHash As Byte() = SHA1.ComputeHash(byteValue)
    SHA1.Clear()
    Return Convert.ToBase64String(byteHash)
End Function

Dalam C#:

using System.Security.Cryptography;
public static String ComputeHash(string textToHash)
{
    SHA1CryptoServiceProvider SHA1 = new SHA1CryptoServiceProvider();
    byte[] byteValue = System.Text.Encoding.UTF8.GetBytes(textToHash);
    byte[] byteHash = SHA1.ComputeHash(byteValue);
    SHA1.Clear();
    return Convert.ToBase64String(byteHash);
}

Kita bisa menggunakan kode di atas pada setiap aplikasi untuk menyimpan suatu password atau informasi penting lainnya.

Tetapi meng-hash password tidak bisa melindungi aplikasi dari suatu Dictionary Attack. Untuk menambah keamanan, salt password tersebut,

Salting password

Password yang telah di-hash memberikan keamanan yang lebih baik daripada menyimpan password dalam database sebagai text. Hash – masih memiliki kelemahan bila diserang menggunakan Dictionary Attack. Dengan menggunakan Dictionary Attack, cracker berusaha menebak password dengan menggunakan software untuk mencari pola hash yang sama dari semua kata dalam kamus kata yang disiapkan dan membandingkan nilai hash yang didapat dengan nilai hash yang terdapat dalam database.

Untuk mempersulit kerja para cracker tersebut, kita bisa menambahkan beberapa byte acak pada awal dan/atau akhir dari password sebelum melakukan proses hashing dan penyimpanan. Byte acak tersebut disebut salt. Kemudian kita bisa menyimpan nilai salt ini ke dalam tabel bersamaan dengan password.

Dalam VB:

Public Function ComputeSalt() As String
    Dim GuidValue As System.Guid = System.Guid.NewGuid()
    Return GuidValue.ToString()
End Function

Dalam C#:

public static String ComputeSalt()
{
    System.Guid GuidValue = System.Guid.NewGuid();
    return GuidValue.ToString();
}

Dengan menggunakan 2 teknik hash dan salt, kita bisa meminimalisir kemungkinan akses ilegal ke dalam aplikasi kita.

Validasi Login

Kode-kode pada bagian berikut akan mencoba menyatukan semua konsep di atas untuk mendemonstrasikan suatu method ValidasiLogin. Method ini menggunakan teknik salt dan hash seperti yang telah dijelaskan sebelumnya.

Dalam VB:

Public Function ValidasiLogin(ByVal sUserName As String, _
   ByVal sPassword As String) As Boolean
    Dim dsUser As New DataSet
    If sUserName.Length = 0 OrElse sPassword.Length = 0 Then
     Throw New ArgumentOutOfRangeException("Username dan Password diperlukan.")
    End If
    dsUser = Me.Retrieve(sUserName) 

    ' Jika User tidak ditemukan, tampilkan pesan error
    If dsUser Is Nothing _
       OrElse dsUser.Tables(TN_USER) Is Nothing _
       OrElse dsUser.Tables(TN_USER).Rows.Count = 0 Then
        Throw New UsernameNotFoundException("Invalid Username")
    End If 

    ' Jika User ditemukan, lanjutkan dengan validasi password
    ' Suatu nilai hash dari gabungan salt dan password yang dimasukkan.
    With dsUser.Tables(TN_USER).Rows(0)
      Dim sPasswordEncoded As String = CType(.Item(FN_PASSWORD_ENCODED), String)
      Dim sPasswordSalt As String = CType(.Item(FN_PASSWORD_SALT), String)
      Dim sPasswordHash As String = SecurityUtility.ComputeHash(sPasswordSalt & _
                                                                     sPassword)
      ' apakah nilai hash yang didapat sesuai dengan nilai hash dalam database?
      If String.Compare(sPasswordEncoded, sPasswordHash) <> 0 Then
          Throw New PasswordInvalidException("Invalid Password")
      End If 

      Return True
    End Function

Dalam C#:

public bool ValidasiLogin(string sUserName, string sPassword)
{
    DataSet dsUser;
    if (sUserName.Length == 0 || sPassword.Length == 0)
    {
    throw new ArgumentOutOfRangeException("Username dan Password diperlukan.");
    }
    dsUser = this.Retrieve(sUserName); 

    // Jika User tidak ditemukan, tampilkan pesan error
    if (dsUser == null || dsUser.Tables[TN_USER] == null
       || dsUser.Tables[TN_USER].Rows.Count == 0)
    {
       throw new UsernameNotFoundException("Invalid Username");
    } 

   DataRow dr =  dsUser.Tables[TN_USER].Rows[0];
   string sPasswordEncoded  = dr[FN_PASSWORD_ENCODED].ToString();
   string sPasswordSalt = dr[FN_PASSWORD_SALT].ToString();
   string sPasswordHash = SecurityUtility.ComputeHash(sPasswordSalt +
                                                           sPassword); 

   if (String.Compare(sPasswordEncoded, sPasswordHash) != 0)
    {
       throw new PasswordInvalidException("Invalid Password");
    } 

    return true;
}

NB: PasswordInvalidException dan UsernameNotFoundException merupakan developer-defined Exception.

Method ini mengambil nilai password dan username yang dimasukkan sebagai parameter, Jika parameter kosong, kode akan menampilkan pesan kesalahan. Username kemudian akan diteruskan ke method Retrieve, yang akan menerima dataset dari database yang memiliki data mengenai user yang sedang login. Kode akan memberi pesan kesalahan jika dataset kosong.

Salt diterima dari dataset dan ditambahkan ke password yang dimasukkan oleh user. Hasilnya diteruskan ke method ComputeHash untuk menghitung nilai hash. Dari hasil tersebut kemudian akan dibandingkan dengan nilai hash yang diterima dari dalam dataset. Kode akan memberi pesan kesalahan jika kedua nilai hash tidak sesuai.

Finally, Anda bisa menggunakan cara ini sebagai pattern dalam validasi login aplikasi Anda untuk menjaga dan membatasi akses-akses ilegal ke dalam aplikasi Anda.

Ada tambahan?

Share and Enjoy:

  • services sprite Pengamanan Akses Login dalam Visual Studio
  • services sprite Pengamanan Akses Login dalam Visual Studio
  • services sprite Pengamanan Akses Login dalam Visual Studio
  • services sprite Pengamanan Akses Login dalam Visual Studio
  • services sprite Pengamanan Akses Login dalam Visual Studio
  • services sprite Pengamanan Akses Login dalam Visual Studio
  • services sprite Pengamanan Akses Login dalam Visual Studio
  • services sprite Pengamanan Akses Login dalam Visual Studio
  • services sprite Pengamanan Akses Login dalam Visual Studio
  • services sprite Pengamanan Akses Login dalam Visual Studio
  • services sprite Pengamanan Akses Login dalam Visual Studio
  • services sprite Pengamanan Akses Login dalam Visual Studio
  • services sprite Pengamanan Akses Login dalam Visual Studio
  • services sprite Pengamanan Akses Login dalam Visual Studio
  • services sprite Pengamanan Akses Login dalam Visual Studio
  • services sprite Pengamanan Akses Login dalam Visual Studio
  • services sprite Pengamanan Akses Login dalam Visual Studio
  • services sprite Pengamanan Akses Login dalam Visual Studio

Artikel Terkait :

Tags: , , ,   Dalam CSharp, Pemrograman, VB | 14 Comments »

You can leave a response, or trackback from your own site.


http://googleweblight com/?lite_url=http://www idfreelance net/pemrograman/pengamanan-akses-login-dalam-visual-studio/&ei=iyqm4qzl&lc=id-id&s=1&m=618&host=www google co id&ts=1483730693&sig=af9nedmoonpaqhvw2lisxrbtk2sut6wkka  http://www idfreelance net/pemrograman/pengamanan-akses-login-dalam-visual-studio/  lupa pasword visual basic  validasi password dengan vb  keamanan md5 vb net 2010  tutorial membuat md5 di visual studio 2008  gantipassword pada form login dengan vb net  aplikasi dengan visual studio2010  md5 login vb net  validasi vb net  c# belajar form login  tutorial pemrograman web dengan visual studio 2010  pengaman login visual basic  contoh form login c#  falidasi login dengan c# net  Form login lupa password di VB Net  cara akses dictionary vb net  penerapan sha1 pada validasi password  keamanan data di/visual basic studio  membuat userlogin menggunakan vb net  laporan dengan visual studio2010  link lupa password untuk vb  cara buat script md5 di vb net  membuat login yang paling aman vb net  aplikasi login user dan password dengan penerapan algoritma md 5 dari visual basic 2010  tutorial desain aplikasi menggunakan visual studio  menambahkan md5 divisual studio  RESET PASSWORD PADA VB NET  apa itu md5 di vb net  contoh cara enkripsi password dengan visual studio 2010  enkripsi password di c#  http://googleweblight com/?lite_url=http://www idfreelance net/pemrograman/pengamanan-akses-login-dalam-visual-studio/&ei=2b7dsxax&lc=id-id&s=1&m=618&host=www google co id&ts=1483753644&sig=af9nedkb4ltdqii1yo7e72zadsc0c3gvqw  contoh aplikasi dengan visual studio 2010  pengamanan akses  cara membuat password tak terlihat di c#  cara membatasi akses user pada vb net dengan login script  lupa password visual basic  belajar membuat pengaman website  keamanan login admin password diberikan function apa  apa yang dimaksud dengan md5 dalam visual studio  visual basic 2008 - multi login md5  aplikasi validasi password dengan microsoft visual studio  belajar system security cryptography  belajar visual studio 2010  buat aplikasi login user dan password dengan penerapan algoritma md5 vb  buat encryption password dengan VB2008  buat form kreasi yg unik untuk vb 2010  belajar sha-1  artikel visual studio  arti dari public as dataset  
 

 

14 Respon untuk “Pengamanan Akses Login dalam Visual Studio”

  1. KARTUBI says:

    assalamualaikum
    keren toturial nya terimakasih
    masukan nya saya sangat ska skali
    jangan lpa informasi bru nya
    di tunggu.karena saya mencintai hacker.

  2. Definisi says:

    Definisi…

    [...]Pengamanan Akses Login dalam Visual Studio | IDFreelance.net – Ajang Belajar Pemrograman dan Desain Web[...]…

  3. ajonk says:

    wah lumayan gan bleh asikkkkkkkkkkkkkkkkk banget

  4. kentang says:

    keren bro, izin copas yah scriptnya… thanx alot

  5. tya says:

    Aku lg buat satu aplikasi, bingung jika member lupa no pin nya gmn kembalikan kode yg terenkripsi itu ya? Solusinya, ya tinggal buat pin baru. Gampang ya! hehe.. Thx mas… nice info^^

  6. arief says:

    infonya bagus mas…thanks yahhh…

  7. ica says:

    sip jg VB nya mas…

  8. Slm hormat, ada contoh kode delphi pemakaian teknik enkripsi data menggunakan algoritma enkripsi PR dengan jenis enkripsi simetrik dengan tipe stream cipher, fungsi enkripsi telah dibuat dlm file librari dll,sehingga dapat digunakan oleh bahasa pemrograman lainnya yang dapat mengakses file dll, kode pemakaian fungsi enkripsi dapat dilihat di http://www.ciauldownload.blogspot.com pada bagian artikel, terima kasih

  9. gonzalez says:

    pa bonitoo nih mau nanya kira2 ada tidak script dari php yang bisa digunakan untuk menampilkan laporan sehingga bisa di print seperti pada vb atau delphi dan klu bisa minta dg scriptx tersebut, thx

  10. da best. Keep it going! Thank you

  11. L says:

    Terjemahan dari e-book “Best Kept Secrets in Dot NET”…
    hehe..

  12. MMBC TRAVEL says:

    link anda sudah kami pasang di http://www.klikmbc.biz/tukar_link.htm
    tolong pasang juga link kami di website anda dengan
    judul: Peluang Usaha Travel System Online
    isi: Hanya dengan modal 1,5jt, Anda bisa menjalan Usaha Travel dengan System Reservasi Online, bisa cetak tiket pesawat langsung Hub MMBC Travel:DPK Jamsostek Lt 1 ruang B03. Jl. Tangkas Baru No.1 Gatot Subroto Jakarta Selatan 12930 MMBC Call (021) 5228525, 5228526, 93817926, SMS: 081514465345,0816705750
    http://www.klikmbc.biz
    Terimakasih

  13. gus says:

    wauh scriptnya banyak bgt. btw, ngebookmark dulu deh. biar bisa dibaca berkali2 di laptop….

  14. Bambang Oke says:

    Programer sejati,
    aku ga ngerti opo itu yg di tulis mas :D

Tinggalkan balasan




nine − = 6