Proteksi Web di ASP.NET
20 Juli, 2007 at 3:03 am | In MS.NET | Leave a CommentMembahas masalah security tentu tidak habis-habisnya. Seperti anda tahu bahwa dalam sebulan segala macam security hole dapat terungkap.
Namun pada artikel ini saya akan membahas dari sisi ASP.NET, khususnya yang ada di web Jasakom ini.
Bagi anda yang suka me-”ngetest” web Jasakom, mungkin sudah sering melihat tampilan di bawah ini:

Bagi yang belum pernah melihatnya page diatas mungkin suatu hari akan menemukan nya tanpa melakukan testing script, maka perlu diketahui itu adalah error yang belum di ketahui oleh kami, dan perlu di beritahukan ke webmaster agar dapat kami perbaiki.
Memang tidak mudah membuat suatu web yang aman dari serangan para hacker tsb.
Namun ada beberapa tips yang akan saya bagikan di sini. Dalam ASP.NET segala error yang di query dapat kita trap dan di redirect ke error page. Jadi tidak seperti yang terjadi pada ASP klasik dimana anda mencoba memberikan parameter pada URL dan anda mengharapkan ditampilkannya direktory, nama table ataupun informasi berharga lainnya pada error message dan kemudian anda melanjutkan misi berikut dengan SQL Injection.
Error trapping ini ada di file web.config seperti code di bawah ini:
<customErrors mode=”On” defaultRedirect=”error.aspx”/>
Tetapi jika anda tidak ingin redirect error atau membiarkan error tsb di tampilkan di webpage maka dapat menggunakan code seperti di bawah ini:
<customErrors mode=”Off” /> Memang fungsi ini sangat berharga khususnya untuk Jasakom, karena dalam sehari “pengetes”-an itu sangat banyak dilakukan.
Ada satu hal lagi yang perlu di ingat, pada saat develop web ini, saya menggunakan Try Catch untuk menampilkan error sehingga lebih mudah untuk di debug karena akan ditampilkan error message-nya.
Namun anda harus hapus Try Catch tsb karena dengan adanya ini maka ia tidak akan di redirect ke error page.
Mengisi Data Tabel ke DropDownList – ASP.NET
20 Juli, 2007 at 3:01 am | In MS.NET | Leave a CommentDalam pemrograman aplikasi desktop ataupun web tentunya kita tidak terlepas untuk menggunakan dropdownlist.Berikut ini saya akan membagikan cara bagaimana membuat fungsi isi data dari tabel ke DropDownList. Jadi apabila form ASP.NET anda menggunakan category, maka tentunya anda dapat menggunakan fungsi ini.
Pada contoh ini saya menggunakan tabel dengan nama tbCategory yang dibuat dengan MS Access 2000.
Field yang digunakan adalah
CategoryId (autonumber)
CategoryName (string 20)
CatOrder (string 2)
Langkah pertama, kitaakan tempatkan connection string di file web.config. Hal ini untuk memudahkan agar kita perlu membuat connection string berulang-ulang di dalam coding kita yang banyak berhubungan dengan proses database.
File web.config
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appSettings>
<add key="cn" value="Provider=Microsoft.Jet.OLEDB.4.0;data source=[driveanda]:\[namafile].mdb"/>
</appSettings>
</configuration>
Langkah kedua adalah membuat file ASPX.
File Fillddlcs.aspx
<%@ Page Language="vb" src="Fillddlvb.aspx.cs" Inherits="dotnet.FillDropDownList" AutoEventWireup="true" %> <HTML> <HEAD> </HEAD> <form runat="server" method="post"> <table> <tr> <td> <font size="2">Category :</font> </td> <td> <asp:dropdownlist id="ddlCategory" DataValueField="CategoryId" DataTextField="CategoryName" Width="150" runat="server"/> </td> </tr> </table> </form> </body> </HTML>
Penjelasan program pada file aspx:
DataValueFiled adalah field yang nilainya akan disimpan ke tabel.
DataTextField adalah field yang nilainya akan ditampilkan.
File Coding Program fillddlcs.aspx.cs
// C# Coding
using System;
using System.Data;
using System.Data.OleDb;
using System.Web.UI.WebControls;
using System.Configuration;
namespace dotnet
{
public class FillDdlCs : System.Web.UI.Page
{
protected DropDownList ddlCategory;
public void Page_Load(Object sender, EventArgs e)
{
GetValues("tbCategory","CatOrder");
}
public bool GetValues(string tableName, string RowOrder)
{
OleDbConnection myConnection = new OleDbConnection(ConfigurationSettings.AppSettings["cn"]);
myConnection.Open();
string stSql = "Select * from " + tableName + " ORDER BY " + RowOrder;
OleDbCommand myCommand = new OleDbCommand(stSql, myConnection);
OleDbDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
ddlCategory.DataSource = myReader;
ddlCategory.DataBind();
return true;
myReader.Close();
}
}
}
Penjelasan program file fillddlcs.aspx.cs:
Call fungsi GetValues pada saat loading page, sehingga DropDownList dapat di isi dengan tabel Category.
Parameter menggunakan nama tabel dan field CatOrder agar urutannya sesuai dengan yang sudah ada di field ini.
Mengubah Password User di Windows
20 Juli, 2007 at 2:58 am | In MS.NET | Leave a CommentJika anda berpikir untuk membuat modul mengganti password windows secara remote, maka ini adalah function yang anda perlukan. Di artikel ini disharing source code function yang bekerja dengan API dari windows untuk mengganati password user.
To the point, untuk para teman-teman yang ada di Jasakom saya ingin membagikan sedikit tips bagaimana mengganti password dari user-user yang ada di Windows. Adapun tools ini dibuat dari Visual Basic 6 Dimana Tools ini dapat mengganti password dari Administrator,guest,etc secara remote atau
beda komputer Dengan tools ini maka kita bisa mengakses komputer orang lain setelah password admin nya kita ganti…smoga ilmu ini tidak
disalah gunakan
Tools ini bekerja dengan memakai komponen yang telah disediakan oleh windows yaitu “Netapi32.dll”,
Berikut ini saya serta kan source dari tools ini:
--------------------------------------------------------------------------------------------
'Copyright by x-vb@jhie
'http://www.vbbego.cjb.net
'Penulis: x-vb@jhie - 7/21/2004
Option Explicit
Private Declare Function NetUserChangePassword Lib "Netapi32.dll" _
(Domain As Any, User As Any, OldPass As Byte, NewPass As Byte) As Long
Private Sub Command1_Click()
Dim H As Long
Dim bServer() As Byte, bUsername() As Byte
Dim bold() As Byte, bNew() As Byte
' Masukan nama computer yg akan diganti passwordnya
bServer = "\\192.168.0.1" & vbNullChar
'Nama user yg akan diganti passwornya
bUsername = "Administrator" & vbNullChar 'Password lama bold = "123" & _
vbNullChar 'Password Baru bNew = "root" & _
vbNullChar H = NetUserChangePassword(bServer(0), bUsername(0), bold(0), bNew(0))
If H = 0 Then
MsgBox "Password telah diganti dengan yang baru",64
Else
MsgBox "penggantian password gagal",16
End If
End Sub
--------------------------------------------------------------------------------------------
Tips Paging Datagrid
20 Juli, 2007 at 2:35 am | In MS.NET | Leave a CommentDi tulisan ini saya akan memberikan tips megenai penulisan paging pada datagrid. Dari semua contoh custom paging di internet yang pernah saya baca agaknya memiliki cara yang cukup komplex, dan juga agak berbelit-belit karena menggunakan temporary file ataupun dengan segala macam web control temporary yang di hidden di halaman aspx.
Langkah yang perlu dilakukan adalah membuat navigasi di halaman aspx. Pada bagian ini saya menggunakan imagebutton control sehingga tampilannya lebih menarik di bandingkan dengan menggunakan text (label control).
Ke 4 web control di bawah ini akan memanggil method yang sama yaitu Navigate. Yang berbeda di sini hanya CommandName -nya saja.
<asp:imageButton ID="lnkFirst1" Runat="server" ImageUrl="images/first.gif" tooltip="First Page" CommandName="First" OnCommand="Navigate"/> <asp:imageButton ID="lnkPrev1" Runat="server" ImageUrl="images/previous.gif" Tooltip="Previous" CommandName="Prev" OnCommand="Navigate"/> <asp:imageButton ID="lnkNext1" Runat="server" ImageUrl="images/next.gif" ToolTip="Next" CommandName="Next" OnCommand="Navigate"/> <asp:imageButton ID="lnkLast1" Runat="server" ImageUrl="images/last.gif" ToolTip="Last Page" CommandName="Last" OnCommand="Navigate"/>

Pada bagian datagrid control tetap menggunakan attribute AllowPaging=”True”, tetapi PagerStyle-Visible=”False”.
Disini memang agak menarik karena saya tidak menggunakan custom paging, tetapi hasil yang akan kita gunakan di
sini sama dengan custom paging.
<ASP:DataGrid id="MyDataGrid" runat="server" width="100%" AlternatingItemStyle-BackColor="#fbdddd" erdana" CellSpacing="0" CellPadding="3" GridLines="Both" PagerStyle-Visible="False" PageSize="10" OnItemCreated="OnItemCreatedEventHandler" AllowPaging="True" AutoGenerateColumns="false"> </ASP:DataGrid>
Setelah selesai coding pada bagian file aspx, maka sekarang kita akan membuat coding pada code-behind.
Langkah pertama adalah menghitung jumlah halaman yang ada dengan contoh code seperti di bawah ini. Untuk perhitungan jumlah
halaman ini saya menggunakan myDatagrid.Pagesize yang telah ditentukan di datagrid control. Code di bawah ini dapat di tambahkan
pada bagian akhir dari method BindGrid() anda.
'--------------------------------Calculate the pages-------------------------------------------------
myConnection.Open()
Dim myCommand = New OleDbCommand(stSql, myConnection)
Dim myReader As OleDbDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
Dim TotalRec As Int32
If myReader.HasRows Then
While myReader.Read
TotalRec = TotalRec + 1
End While
End If
myReader.Close()
Dim TotalPage As Int16 = Math.Round(TotalRec / MyDataGrid.PageSize, 1)
lblTotalPage.Text = Convert.ToString(Convert.ToUInt16(TotalPage))
'--------------------------inisialisasi tampilan button navigasi
If MyDataGrid.CurrentPageIndex = 0 Then
lnkFirst1.Enabled = False
lnkFirst1.ImageUrl = "images/first_dis.gif"
lnkPrev1.Enabled = False
lnkPrev1.ImageUrl = "images/previous_dis.gif"
lnkLast1.Enabled = True
lnkLast1.ImageUrl = "images/last.gif"
lnkNext1.Enabled = True
lnkNext1.ImageUrl = "images/next.gif"
End If
'------------------------------------------------------------------
Selanjutnya yang perlu ditambahkan untuk mendukung paging ini adalah method Navigate.
Perhatikan code di bawah ini, saya menggunakan Mydatagrid.CurrentPageIndex untuk mengetahui posisi halaman kita berada.
Untuk SELECT CASE tersebut kita menggunakan CommandName yang telah ditentukan pada datagrid control di halaman ASPX.
Image yang digunakan di sini ada 2 untuk setiap tombol navigasi, saya akan ambil tombol first sebagai contoh.
Image first.gif adalah dengan warna yang lebih terang, dengan maksud menandakan tombol aktif dan dapat di klik, sedangkan first_dis.gif adalah image yang tombol tidak aktif dan menggunakan warna abu-abu.
Public Sub Navigate(ByVal sender As Object, ByVal e As CommandEventArgs)
Select Case e.CommandName
Case "First"
MyDataGrid.CurrentPageIndex = 0
lnkFirst1.Enabled = False
lnkFirst1.ImageUrl = "images/first_dis.gif"
lnkPrev1.Enabled = False
lnkPrev1.ImageUrl = "images/previous_dis.gif"
lnkLast1.Enabled = True
lnkLast1.ImageUrl = "images/last.gif"
lnkNext1.Enabled = True
lnkNext1.ImageUrl = "images/next.gif"
Case "Next"
MyDataGrid.CurrentPageIndex = MyDataGrid.CurrentPageIndex + 1
If MyDataGrid.CurrentPageIndex = CInt(lblTotalPage.Text) - 1 Then
lnkLast1.Enabled = False
lnkLast1.ImageUrl = "images/last_dis.gif"
lnkNext1.Enabled = False
lnkNext1.ImageUrl = "images/next_dis.gif"
End If
lnkFirst1.Enabled = True
lnkFirst1.ImageUrl = "images/first.gif"
lnkPrev1.Enabled = True
lnkPrev1.ImageUrl = "images/previous.gif"
Case "Prev"
MyDataGrid.CurrentPageIndex = MyDataGrid.CurrentPageIndex - 1
If MyDataGrid.CurrentPageIndex = 0 Then
lnkFirst1.Enabled = False
lnkFirst1.ImageUrl = "images/first_dis.gif"
lnkPrev1.Enabled = False
lnkPrev1.ImageUrl = "images/previous_dis.gif"
End If
lnkLast1.Enabled = True
lnkLast1.ImageUrl = "images/last.gif"
lnkNext1.Enabled = True
lnkNext1.ImageUrl = "images/next.gif"
Case "Last"
MyDataGrid.CurrentPageIndex = CInt(lblTotalPage.Text) - 1
'Top navigation
lnkLast1.Enabled = False
lnkLast1.ImageUrl = "images/last_dis.gif"
lnkNext1.Enabled = False
lnkNext1.ImageUrl = "images/next_dis.gif"
lnkFirst1.Enabled = True
lnkFirst1.ImageUrl = "images/first.gif"
lnkPrev1.Enabled = True
lnkPrev1.ImageUrl = "images/previous.gif"
End Select
BindGrid()
End Sub
Dari contoh di atas dapat kita lihat bahwa tidak perlu menuliskan code yang panjang dan bertele-tele seperti membuat temporary file dan contorol-control lainnya yang membuat langkah coding lebih panjang.
Blog pada WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.