Professional Documents
Culture Documents
PENDAHULUAN
1.1 Latar Belakang
Perkembangan Teknologi Internet sudah semakin pesat. Pemakaian halaman web
yang dinamis semakin banyak untuk menggantikan HTML yang statis atau
konvensional. WEB dinamis digunakan dibidang e-commerce, pendidikan dan
lain sebagainya.
Penggunaan WEB yang dinamis untuk e-commerce memungkin seseorang
melakukan suatu transaksi perdagangan. Penguna dapat memilih atau melihat atau
berbelanja melalui internet. Ketika user (pembeli) memberikasn suatu instruksi
melalui client, maka pada server melakukan suatu proses. Proses yang dilakukan
di server melihat apakah transaksi dapat dilakukan. Jika permintaan dari client
terpenuhi atau tidak server akan memberikan suatu respon untuk memenuhi atau
menolak permintaan dari client.
Diantara client dan server ada suatu jarak yang tidak terukur. Jarak yang terjadi
antara client dan server sangat rawan terhadap keamanan. Server tidak dapat
mengenali siapa yang melakukan permintaan untuk transaksi dan sedangkan client
juga tidak dapat mengenali apakah server yang dituju adalah benar sesuai dengan
kehendaknya. Untuk menjaga saling kepercayaan antara client dan server perlu
dibuat sebuah prosedur untuk memeriksa atau menjaga kebenaran diantara kedua
pelaku.
Untuk mengatasi maka bagi seoarang perancang atau pengembang membuat
sebuah sistim keamanan WEB. Client dapat diuntungkan bahwa transaksi yang
dilakukan dapat terjaga dengan baik dan server terhindar dari serangan dari pihak
lain. Dengan demikian antara client dan server dapat terjalin rasa kepercayaan.
Teknologi yang digunakan untuk membangun web dinamis salah satunya dengan
menggunakan teknologi Active Server Pages (ASP).NET. Taknologi ASP.NET
juga harus meiliki tingkat keamanan yang dapat dipercayai.
1.2 Pembatasan Masalah
Dalam membangun sebuah web yang dinamis yang diutamakan adalah menjaga
kepercayaan dan keamanan data bagi client dan server. Didalam makalah ini
menjelaskan bagaimana membangun sebuah web yang mempunyai security atau
tingkat keamanan yang baik dan dapat menjaga keamanan client dan server yang
baik. Untuk itu pembatasan pembahasan diutamakan dalam kerangka ASP.NET
1.3 Tujuan
Paper ini bertujuan untuk:
a. menjelaskan faktor keamanan yang akan dipertimbangkan untuk
membangun web dinamis yang menggunakan ASP.NET,
b. menjelaskan keamanan WEB yang dikembangkan untuk server serta
aplikasi authentikasi,
c. pengembang dapat membuat halaman web yang dapat mengantisipasi
serangan terhadap server.
BAB II
KEAMANAN
2.1 Perihal Kemanan
Dalam time sharing dan kemudahan untuk mengakses dari jarak jauh,
menyebabkan terciptanya kelemahan dalam komunikasi. Kelemahan yang terjadi
dapat kerawanan dalam keamanan. Keamanan sangat diperlukan oleh komputer
untuk menghindari terjadinya serangan dari penguna yang berada diluar otoritas
yang diberikan.
Keamanan komputer merupakan sebuah tindakan preventif perlindungan dari
sumber-sumber daya yang dimiliki. Bagi pengembang juga harus memperhatikan
tipe-tipe ancaman yang dating. Pengetahuan terhadap tipe-tipa ancaman,
pengembang dapat membuat metoda atau sistim keamanan. Salah satu metoda
yang sangat popular pada saat login berupa nama dan password.
2.2 Keamanan Framework .NET
Framework NET benyak menyediakan feature sistim keamaman. Diantaranya
yang digunakan untuk menentukan mengenali dan menganalisa identitas pemakai.
Dari hasil pemeriksaan dan penganalisaan membolehkan atau menolak pengguna
untuk mengakses sumber-sumber yang tersedia.
a. Role Based Security
Framework .NET mempunyai suatu metoda yang utuh untuk memenej
identitas penguna. Metoda ini dapat menentukan identitas penguna
berdasarkan kode-kode yang telah diberikan. Ketika identitas yang
diberikan diproses apakah yang menggunakan identitas tersebut sesuai
dengan data yang tersedia. Kode-kode yang diberikan dapat saja berupa
nama atau password atau jenis-jenis pengenal lainnya.
Description
Hash of the assembly
AuthentiCode signer
Public key+name+version
Web site of code origin
URL of code origin
Internet Explorer zone of code origin
memperlihatkan
hubungan
antara
clien
dan
server
dan
gambar2
ini
pengembangan
infrastruktur
harus
mempertimbangan
segi
Dasar Lapisan
yaitu
Impersonation
(penyamaran)
a. Impersonation (penyamaran)
dan
form
authentication
Tupe ini mengunakan authentication IIS dan file akses keamanan Windows
NT untuk memprogram keamanan minimal pada aplikasi ASP.NET. Aliran
data dapat dilihat pada gambar 5 Pola Inpersanation
Urutan-urutan kerja sebagai berikut ini:
a. client melakukan permintaan akses melalaui IIS,
b. IIS melaukukan pemeriksaan authentication yang digunakan client,
singkatan dan diintegrasikan Autentication Windows (NTLM atau
Kerberos),
c. authentication client telah dibuktikan keasliaanya, IIS meyampaikan
permintaan client yang dibuktikan keasliannya melalui ASP.NET,
d. aplikasi permintaan client Impersonation (disamarkan) menggunakan
tanda yang diambil dari IIS, dan mempercayakan kepada file NTFS untuk
melakukan akses. Aplikasi ASP.NET hanya memerlukan verifikasi
konfigurasi file ASP.NET. Perintah Impersonation-enable dinyatakan
benar,
e. jika akses dijamin, maka aplikasi ASP.NET memngembalikan permintaan
melewati IIS
BAB III
PERSIAPAN MEMBANGUN WEB
3.1 Membangun Konfigurasi
a. IIS versi 5.0
WEB yang menggunakan ASP.NET tidak terlepas dari IIS.
IIS selalu
Penyetelan yang tepat ACLs untuk file IIS Log dan enabke logging.
Konfigurasi ACLs
Pennyetelan ACKs merupakan langkah pertama didalam mengamankan IIS.
Pengaturan dapat dilakukan bersamaan dengan Windows ACLs dan IIS based
ACLs melalui tipe file yang berbeda. Lihat Tabel 2 Konfigurasi ACLs
Tabel 2 Konfigurasi ACLs
File Type
Access Control List
File scrip seperti: *.asp, *.aspx, *.asmx,
Internet Guest Account (eksekusi)
*.ascx, dan lain-lain
Everyone (eksekusi)
System (Full Control)
Administrator (Full Control)
File yang tergabung seperti: *.inc, *.shtm, Internet Guest Account (readonly)
dan *.shtml
Everyone (readonly)
System (Full Control)
Administrator (Full Control)
File yang statis seperti: *.html, *.htm,
Internet Guest Account (readonly)
*.gif, *.jpeg, *.txt, *.doc, *.pdf, dan lain Everyone (readonly)
lain
System (Full Control)
Administrator (Full Control)
b. Sistim Operasi
Server menggunakan sistim operasi Windows 2000 Advanced Server
merupakan suatu layanan yang baru. Semua kemungkinan serangan terhadap
keamanan telah mulai ditutupi oleh sistim ini. Namun itu belum merupakan
suatu jaminan akan aman dari serangan, untuk menutupi diperlukan sistim
administrator yang baik.
c. Standar Keamanan IP
Membangun WEB dengan Microsoft Windows 2000, mereka memeiliki
pendukung untuk memenej authentication dan encryption pada Internet
Protocol (IP4). Trafic yang digunakan IP Security Standards (IPSec). Gambar
dibawah ini melihatkan dialog untuk server (request Security)
Code
injection;
merupakan
suatu
kode
yang
dinjeksikan
BAB IV
Autentikasi dan Pengunaan Kode
4.1 Contoh Aplikasi Sederhana
Contoh aplikasi interface sederhana ini terdiri dari 2 program, yaitu
PublicPage.aspx untuk mengambarkan siapapun penguna aplikasi web, dan
ProtectedPage.aspx.berguna
untuk
mengidentifikasi
penguna
tersebut.
Autentikasi penguna terlebih dahulu harus mengisi nama dan password melalui
halaman LoginPage.aspx. Kemudian pembuktian benar atau tidaknya disimpan
dihalaman Web.config.
Kode Simple Forms Authentication
PublicPage.aspx
<html>
<body>
<h1>Public Page</h1>
<hr>
<form runat="server">
<asp:Button Text="View Secret Message" OnClick="OnViewSecret"
RunAt="server" />
</form>
</body>
</html>
<script language="C#" runat="server">
void OnViewSecret (Object sender, EventArgs e) { Response.Redirect
("Secret/ProtectedPage.aspx");}
</script>
gambar 18 Login
ProtectedPage.aspx
<%@ Page Language="C#" %>
<html>
<body>
<h1>Protected Page</h1>
<hr><br><% Response.Write (Context.User.Identity.Name + ": "); %>
Be careful investing your money in dot-coms.
</body>
</html>
LoginPage.aspx
<html>
<body>
<h1>Please Log In</h1>
<hr>
<form runat="server">
<table cellpadding="8">
<tr>
<td> User Name: </td>
<td><asp:TextBox ID="UserName" RunAt="server" /></td>
</tr>
<tr>
<td> Password: </td>
<td><asp:TextBox ID="Password" TextMode="password"
RunAt="server" />
</td>
</tr>
<tr>
<td> <asp:Button Text="Log In" OnClick="OnLogIn"
RunAt="server" /></td>
<td></td>
</tr>
</table>
</form>
<hr>
<h3><asp:Label ID="Output" RunAt="server" /></h3>
</body>
</html>
<script language="C#" runat="server">
void OnLogIn (Object sender, EventArgs e)
{ if
(FormsAuthentication.Authenticate (UserName.Text, Password.Text))
FormsAuthentication.RedirectFromLoginPage (UserName.Text,
false);
else
Output.Text = "Invalid login"; }
</script>
</credentials>
</forms>
</authentication>
kemudian melakukan identifikasi penguna melalui isi dari web.config tersebut,
yang isinya:
<user name="Jeff" password="imbatman" />
<user name="John" password="redrover" />
<user name="Bob" password="mxyzptlk" />
<user name="Alice" password="nomalice" />
<user name="Mary" password="contrary" />
Kode lengkapnya :
<configuration>
<system.web>
<authentication mode="Forms">
<forms loginUrl="LoginPage.aspx">
<credentials passwordFormat="Clear">
<user name="Jeff" password="imbatman" />
<user name="John" password="redrover" />
<user name="Bob" password="mxyzptlk" />
Ketika loging memasukkan nama dan password melalui halaman LoginPage.ASPX, maka
dengan menggunakan perintah SQL web login membaca data nama dan password yang
tesimpan, seperti perintah ini :
<td>
<asp:Button Text="Log In" OnClick="OnLogIn"
RunAt="server" />
</td>
<td>
<asp:CheckBox Text="Keep me signed in" ID="Persistent"
RunAt="server" />
</td>
</tr>
</table>
</form>
<hr>
<h3><asp:Label ID="Output" RunAt="server" /></h3>
</body>
</html>
<script language="C#" runat="server">
void OnLogIn (Object sender, EventArgs e)
{
if (CustomAuthenticate (UserName.Text, Password.Text))
FormsAuthentication.RedirectFromLoginPage (UserName.Text,
Persistent.Checked);
Else
Output.Text = "Invalid login";
}
bool CustomAuthenticate (string username, string password)
{
SqlConnection connection = new SqlConnection
("server=localhost;database=weblogin;uid=sa;pwd=");
try {
connection.Open ();
StringBuilder builder = new StringBuilder ();
builder.Append ("select count (*) from users " +
"where username = \'");
builder.Append (username);
builder.Append ("\' and cast (rtrim (password) as " +
"varbinary) = cast (\'");
builder.Append (password);
builder.Append ("\' as varbinary)");
SqlCommand command = new SqlCommand (builder.ToString (),
connection);
int count = (int) command.ExecuteScalar ();
return (count > 0);
}
catch (SqlException) {
return false;
}
finally {
connection.Close ();
}
}
</script>
<system.web>
<authentication mode="Forms">
<forms loginUrl="LoginPage.aspx" />
</authentication>
</system.web>
</configuration>
<td>
Password:
</td>
<td>
<asp:TextBox ID="Password" TextMode="password"
RunAt="server" />
</td>
</tr>
<tr>
<td>
<asp:Button Text="Log In" OnClick="OnLogIn"
RunAt="server" />
</td>
<td>
<asp:CheckBox Text="Keep me signed in" ID="Persistent"
RunAt="server" />
</td>
</tr>
</table>
</form>
<hr>
<h3><asp:Label ID="Output" RunAt="server" /></h3>
</body>
</html>
<script language="C#" runat="server">
void OnLogIn (Object sender, EventArgs e)
{
if (CustomAuthenticate (UserName.Text, Password.Text)) {
string url = FormsAuthentication.GetRedirectUrl
(UserName.Text, Persistent.Checked);
FormsAuthentication.SetAuthCookie (UserName.Text,
Persistent.Checked);
if (Persistent.Checked) {
HttpCookie cookie =
Response.Cookies[FormsAuthentication.FormsCookieName];
cookie.Expires = DateTime.Now +
new TimeSpan (7, 0, 0, 0);
}
Response.Redirect (url);
}
else
Output.Text = "Invalid login";
}
bool CustomAuthenticate (string username, string password)
{
SqlConnection connection = new SqlConnection
("server=localhost;database=weblogin;uid=sa;pwd=");
try {
connection.Open ();
Global.asax
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Security.Principal" %>
<script language="C#" runat="server">
void Application_AuthenticateRequest (Object sender, EventArgs e)
{
HttpApplication app = (HttpApplication) sender;
if (app.Request.IsAuthenticated &&
app.User.Identity is FormsIdentity) {
FormsIdentity identity = (FormsIdentity) app.User.Identity;
// Find out what role (if any) the user belongs to
string role = GetUserRole (identity.Name);
// Create a GenericPrincipal containing the role name
// and assign it to the current request
if (role != null)
app.Context.User = new GenericPrincipal (identity,
new string[] { role });
}
}
string GetUserRole (string name)
{
SqlConnection connection = new SqlConnection
("server=localhost;database=weblogin;uid=sa;pwd=");
try {
connection.Open ()
StringBuilder builder = new StringBuilder ();
builder.Append ("select role from users " +
"where username = \'");
builder.Append (name);
builder.Append ("\'");
SqlCommand command = new SqlCommand (builder.ToString (),
connection);
object role = command.ExecuteScalar ();
if (role is DBNull)
return null;
return (string) role;
}
catch (SqlException) {
return null;
}
finally {
connection.Close ();
}
}
</script>
FormsAuthentication.SetAuthCookie (UserName.Text,
Persistent.Checked);
if (Persistent.Checked) {
HttpCookie cookie =
Response.Cookies[FormsAuthentication.FormsCookieName];
cookie.Expires = DateTime.Now +
new TimeSpan (7, 0, 0, 0);
}
Response.Redirect (url);
}
else
Output.Text = "Invalid login";
}
Description
Default
name
.ASPXAUTH
loginUrl
login.aspx
protection
timeout
30
path
BAB V
PENUTUP
5.1 Kesimpulan
Tidak seluruhnya halaman WEB yang dibuat akan bebas dari serangan. Dalam hal
ini, perlu dirancang halaman WEB yang dapat mencegah pemakaian diluar
Authentication, sehingga dapat mengamankan WEB dan Server.
Sebelum merancang telebih dahulu kenali tipe-tipe keamanan, jenis-jenis
serangan, arsitektur komponen dan ASP.NET serta authentication yang diterapkan.
Pengetahuan ini berguna untuk melakukan tindakan preventif terhadap halaman
WEB dan mengamankan data-data yang tersimpan didalam server.
5.2 Saran
Tulisan ini dapat dikembangkan oleh para pembaca sehingga halaman WEB yang
dirancang dan dibuat cukup efektif mencegah serangan dari penyerang.
Semoga dapat menjadi bahan refrensi untuk mengembangkan WEB yang baik
ditinjau dari sisi keamanan.
DAFTAR PUSTAKA
1. Basuira, Ruis, dkk, Profesional ASP.NET Security, Wrox Press LTD,
Birmingham, 2002
2. Duthie, G. Andrew, Microsoft ASP.NET Step By Step, Elexmedia
Kumputindo, Jakarta 2003
3. Alex Homer. Professional Active Server Page 3.0 Wrox Press LTD,
April 2000
4. Andy Kurniawan, Bekajar Sendiri Microsoft Active Server Pages Elex
Media Komputindo, Jakarta , Februari 2002
5. http://msdn.microsoft.com/library/default.asp?url=/library/
6. Jeff Prosise Programming Microsoft .NET (Microsoft Press, 2002).
7. http://msdn.microsoft.com/library/en-us/dnnetsec/html/aptcatypes.asp
frame=true