Salah satu test untuk mengetahui sebuah apliaksi database itu baik (bebas Error/Bugs)
adalah dengan test input karaker kutip satu / single quote ('). Contoh
saja di form master (contoh master barang), anda input nama barang misal
barang xx' , atau barang'. terus save. Jika tidak error berarti
aplikasi itu dapat dikatakan baik. Karena kebanyakan programmer sering
melupakan hal single quote. Biasanya jika aplikasi itu tidak validasi
single quote, akan muncul error :
Unclosed quotation mark after the character string '''. Incorrect syntax near '''.
Penjelasan detailnya seperti ini :
Contoh sintak Save anda seperti ini :
Kemudian Jika anda menginput nama barang dengan kutip satu (') contoh barang xx', maka sintak anda akan menjadi :
INSERT INTO M_BARANG (KD_BRG,NM_BRG) VALUES ('B001','barang xx'')
Nah ini akan error seperti diatas karena menjadi ada kutip satu yang
tidak ada pasangannya, karena seharusnya sintak yang benar adalah :
INSERT INTO M_BARANG (KD_BRG,NM_BRG) VALUES ('B001','barang xx')
Lalu bagaimana caranya agar kutip satu dapat di insert ke database ?
caranya adalah dengan selalu menambahkan single quote jika ada value single quote, coba anda buka query analyzer sql:
Jika anda ingin menampikan data :
A'B
'AB'
AB'
AA''BB'
caranya ?
SELECT 'A''B'
SELECT '''AB'''
SELECT 'AB'''
SELECT 'AA''''BB'''
Hasilnya ?
1.Validasi di setiap textbox saat membuat string sql
Sql = "INSERT
INTO M_BARANG (KD_BRG,NM_BRG) VALUES ('" + txt_kd.text.Replace("'", "''")
+ "','" + txt_nm.text.Replace("'", "''")
+ "')"
2.Validasi di setiap textbox saat event TextChanged atau LostFocus
Private Sub TextBox1_LostFocus(ByVal
sender As Object,
ByVal e As
System.EventArgs) Handles TextBox1.LostFocus
TextBox1.Text = TextBox1.Text.Replace("'", "''")
End Sub
3.Validasi saat tombol simpan (looping ke semua object di form)
For Each obj As TextBox In Me.Controls 'Atau GroupBox1.Controls atau Panel1.Controls (sesuikan
saja object container nya)
If TypeOf obj Is TextBox
Then
obj.Text = obj.Text.Replace("'", "''")
End
If
Next
Tambahan:
Hal ini juga salah satu cara untuk dapat mencegah dari SQL Injection yang sebelumnya saya bahas pada postingan Form Login.
Sumber : http://djiesoft.blogspot.com/
0 komentar:
Posting Komentar
Silahkan TInggalkan Komentar Anda di Blog Saya..
No SPAM and No PORN...
Terimakasih Telah meninggalkan Jejak Anda