Anda di halaman 1dari 38

BAB I

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.

Role based mengatur identitas pemakai menggabungkan antara model


otoritas dan autentikasi. Melalui aplikasi kode dapat membaca identitas
secara lansung . Kode kode identitas tersebut disimpan didalam sebuah
data base.
b. Evidence Based Security
Keamanan berbasis Evidence merupakan sebuah kode yang telah
diberikan kepada pemakai sebagai pembatasan unuk memasuki sebuah
aplikasi. Kode-kode tersebut dapat bekerja didalam Framework NET.
Sejumlah kemungkinan-kemungkinan yang tersedia untuk aplikasi dapat
berupa:

kode dapat didownload dari sumber tak aman dan dieksekusi


dengan aman dengan suatu pembatasan

ISP server host dapat bergerak bersama-sama aplikasi pada lokasi


berbeda yang sedang dikerjakan dengan aman untuk meningkatkan
peforman

aplikasi server dapat ditingkatkan dengan kode yang dutulis oleh


penguna yang memaksa berjalan untuk tidak bertentangan dengan
keseluruhan operasi server

program aplikasi dapat berjalan dengan aman pada skrip makro


yang dihubungkan dengan dokumen pemakau.

Sistim kemanan dapat membatasi / mengizinkan kode-kode apa saja yang


boleh dijinkan untuk mengakes. Kode-kode tersebut dilakukan dengan
secara pembuktian kebenaran atau kevalidan permintaan tersebut. Setelah
dapat memastikan bahwa kode-kode tersebut benar atau tidaknya maka
sistim dapat mengizinkan atauu menolaknya untuk melakukan hubungan.

Sistim keamanan memasukkan permintaan (request), serta meyakinkan


kode tersebut untuk mendapatkan izin. Kondisi-kondisi kemanan
Evidence Based dapat membantu memasukkan kode-kode kedalam:

membatasi akses API public

melindungi sumber-sumber yang ada.

Sebagai tambahan terhadap bentuk standar pembuktian pendaftaran yang


tampilkan oleh sistem keamanan , ini juga mungkin untuk memperluas
satuan bukti (evidence) dengan jenis-jenis yang baru. Tabel dibawah ini
memperlihatkan diskripsi sistim pembuktian:
Table 1 Tipe Evidence
Evidence
Hash
Publisher
StrongName
Site
Url
Zone

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

Sistim pemeriksaan keamanan sangat menguntungkan karena mencegah


serangan dari kode-kode yang tidak syah. Sistim keamanan mengizinkan
untuk melakukan pembuktian, jika ternyata bahwa kode yang masuk kode
yang tidak sah maka tidak diizinkan untuk melakukan akses.
Pendekatan terhadap pengkodean mempunyai beberapa cara:
Security-Neutral Code
Aplication Code
Mengatur Wrapper untuk Native Code Implementation
Library Code untuk melindingi pengeksposan Sumber
2.3 Interaksi client dan server
Pengembang merancang halaman web tidak mudah untuk menentukan mana yang
terbaik antara kepentingan server atau client. Kedua-duanya digunakan untuk
saling melengkapi dan kepentingan aplikasi web itu sendiri. Yang diutamamakan
dalam membangun aplikasi adalah memenpatkan kebutuhan sesuai dengan
porsinya. Disini dibutuhkan pengetahuan pengembang untuk memilih mana yang
akan diproses oleh server dan mana yang akan diproses oleh client. Gambar 1

memperlihatkan

hubungan

antara

clien

dan

server

memperlihatkan proses kerja client dan server

gambar 1 Hubungan Client dan Server

gambar 2 proses kerja client dan server

dan

gambar2

ini

2.4 Arsitektur ASP.NET


Gambar dibawah ini memperlihatkan hubungan antara sistim kemanan pada
ASP.NET. Seluruh Web client pada ASP.NET selalu berhubungan dengan Internet
Information Services (IIS).

gambar 3 Arsitektur ASP.NET


IIS bekerja untuk membuktikan dan menganalisa keaslian dari permintaan melalui
WEB client. Jika permintaan terbukti benar maka client berhak mendapatkan
pengembalian permintaanya. Sedangkan tidak terbukti maka dilakukan penolakan.
Aplikasi yang akan dibangun, harus menguraikan dokumen aplikasi dan mampu
untuk mengenali identifikasi key, termasuk batasan autoriti, aliran data, entry
point, dan kode-kode yang khusus. Disamping itu harus mengetahui konfigurasi
fisik pada aplikasi tersebut.dari bentuk-bektuk serangan. Aspek aspek yang harus
dipertimbangkan untuk mengembangkan aplikasi adalah (gambar dibawah ini):
a. Infrastrutur dan Penyebarannya
Dalam

pengembangan

infrastruktur

harus

mempertimbangan

lingkungannya. Yang sangat perlu diperhatikan adalah


infrastruktur keamanan, yaitu Host dan Network.
b. Arsitektur dan desain aplikasi

segi

Dasar Lapisan

Mengembangkan aplikasi memperhatikan bagian bagian yang cukup kritis


mencakup authentication (pengesahan), authorization (otorisasi), input
validasi, manajemen exception, dan lain lain.
c. Analisis Tier by tier
Tingkatan yang cukup logis adalah menguji keamanan aplikasi yang dibangun,
diantaranya Halaman WEB ASP.NET dan pengontrolannya, pelayananan
WEB, komponen yang dilayani, Microsoft .NET Remoting, kode pengaksesan
data dan lain-lain.

gambar 4 Pencabangan dengan 3 Pendekatan


2.5 Aliran Data
Ada 2 cara skenario umum untuk mendisain keamanan ke dalam aplikasi
ASP.NET,

yaitu

Impersonation

(penyamaran)

(pengesahan format) yang menggunakan cookies.

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

gambar 5 Pola Inpersanation


b. Pola kedua Authentication
Apliksi yang menggunakan format authentication, memungkinkan sebuah
proses aplikasi untuk mengumpulkan seperti nama dan password secara
lansung dari client dan menentikan sendiri authenticity. Aplikasi ini tidak
digunakan oleh IIS authentication, tetapi authentication IIS mengatur
kepentingan pemoresan format authentication.
Aliran data dapat dilihat gambar 6 Pola Inpersanation

gambar 6 Pola Inpersanation

Aliran data seperti berikut.


a. Suatu klien menghasilkan suatu permintaan untuk suatu sumber daya
dilindungi.
b. IIS menerima permintaan dan peminta (client) dibuktikan keasliaanoleh
IIS, atau jika Anomnymous Access diperbolehkan, melewati aplikasi
ASP.NET
c. Juka tidak ada cookies yang bertkaitan dengan permintaan, ASP.NET
memindahklan permintaan ke halamam log-on,

d. Kode apliksi memeriksa keaslian dan mengkonfirmasikan


authentication. Jika keaslian di-authentication, kode-kode aplikasi diattach sebagai sebuah cookie yang memuat nama pemakai, tetapi bikan
password. Jika authentication ternyata tidak benar maka permintaan
dikembalikan sebagai dengan pesan logon Acces Denied.
e. Setelah izin dikeluarkan oleh aplikasi, ASP.NET hanya memeriksa
kebenaran melalui authentication. Aplikasi tidak memutuhkan
credential didalam file *.config.
f. Jika pemakai di authentication, ASP.NET memeriksa otoritas dan slah
satu dapat mengizinkan akses untuk keaslian permintaan, melindungi
sumber atau mengembalikan permintaan pada beberapa halaman, dan
menggantungkan pada desain aplikasi.
g. Otoritas akses pemakai pemakai menjamin perlindungan sumner; atau
aplikasi boleh, membutuhkan tambahan untuk menguji credential
sebelum mengotoritaskan akses untuk melindungi sumber.

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

tergabung didalam sistim operasi dari Windows, yang merupakan suatu


account

dan penggunaan untuk autentikasi pengunaan. Sistim operasi

wibdows yang digunakan terlebih dahulu kenali versi IIS.


Versi IIS untuk authentication IIS versi 5.0 sampai IIS versi 6.0. Keduanya
mempunyai perbedaan, yaitu basic, digest dan integrated Windows
Authentication (NTKM atau Kerberos). Sebelum mengunakan salah satu tipe ini
perhatikan IIS administrative service.
Mengamankan IIS ada beberapa langkah dasar, ketidakmampuan feature tidak
akan dapat digunakan., yaitu:
Menyediakan daftar akses control (Accsess Control List / ACLs) yang
tepat untuk WEB dan virtual directori

Menganti seluruh contoh-contoh aplikasi

Mengganti IIS Admin virtual directori dan tidak menggunakan script


mapping

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)

File CGI dieksekusi seperti: *.cgi, *.dll,


*.cmd dan *.pl.

Internet Guest Account (eksekusi)


Everyone (eksekusi)
System (Full Control)
Administrator (Full Control)

gambar 7 Konfigurasi IIS


Konfigurasi IIS
Setelah IIS di Instal dan diikuti dengan beberapa contoh. Sampel itu pada
umunya sudah dikenali lokasinya oleh para hacker. Adminstrator harus
,melakukan pengantian IIS Adminstration Virtual Directory. Table Table 3 IIS
Virtual Directory meper;ihatkan IIS virtual directory yang perlu anda ubah.
Table 3 IIS Virtual Directory
IIS Sample
Virtual Directori
IIS Sample
\IISSAmples
IIS Document
\IISHelp
Data Access
\MSAD

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.

Aplikasi yang dirancang menggunakan

Register Editor (Regedit.Exe)

berfungsi mengubah empat penyetelan register untuk memperkuat


keamanan. Rekomendasi ini sebagai yang praktek terbaik, penyetalan
pada:

Create Register Key : nolmhsh


Lokasi: HKLM\System\CurrentControlSet\Control\LSA
Create Registry Value: NoDefaultExempt
Location: HKLM\System\CurrentControlSet\Services\IPSEC
Create Registry Value: DisableIPSourceRouting
Lokasi:
HKLM\System\CurrentControlSet\Services\Tcpip\Parameters
Create Registry Value: SynAttackProtect
Lokasi:
HKLM\System\CurrentControlSet\Services\Tcpip\Parameters

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)

gambar 8 server (request dialog)


Melalui kotak dialog ini dilakukan konfigurasi yang menggunakan Local Security
Settings Microsoft Management Console (MMC), perhatikan gambar dibawah ini

gambar 9 Dialog Local Security

Hubungan komunikasi antara Web server dengan database server dipasang


saringan authenticate dan sign, komunikasi antara manajemen dengan server
diberikan saringan authenticate, sign dan Encrypt, komunikasi dengan public
melalui Web site yang telah dirancang sebagai akses.

gambar 10 Aplikasi Logical conecsitas IPSec


d. Remote manajemen dan monitoring
Dalam urutan Aministrator untuk memastikan hubungan VPN , administrator
harus mempunyai sertifikat IPSEC yang diinstall pada sistem seperti account
credential yang bertanggung jawab pada akses remote. IPSEC sertifikat
melekatkan bagian pribadi yang berada didalam sertifikat mesin lokal sebagai
simpanan yang tidak dapat umumkan. Pada hakekatnya, dapat dipastikan
memastikan bahwa administrator hanya dapat menggunakan account VPN
klien dari permitted remote administrative workstation, meminimalkan akses
administratif.
Ketika bagian L2Tp telah dibuktikan keasliannya, workstation administrator
menjamin alamat IP pada manajemen network.. Setelah ditetapkan VPN,

manajemen network, administrator dapat membuka suatu bagian Terminal


Service kepada manajemen server, OHTS, seperti halnya penggunaan file
"inbox" dan "outbox" yang di share pada manajemen server untuk membuka
pengubahan isi lokasi atau mendapat file kembali untuk dianalisa. Semua
sistem adalah berdiri sendiri, maka akses yang di share dan Terminal Service
telah diatur untuk menggunakan account lokal pada sistem dengan password.

gambar 11 Remote Managemen dan Monitoring


3.2 Membangun Halaman Pengontrol
a. Thread dan Countermeasure
Kebanyakan Serangan Aplikasi Web memerlukan masukan permintaan
melalui HTTP. Tujuannya adalah untuk memaksa aplikasi masuk ke dalam
melakukan operasi yang tidak syah atau untuk mengganggu kondisi operasi
yang normal sehinnga perlu dilakuakan pembatasan untuk mengamankan
server (gambar model pengendalian).

gambar 12 Model Pengendalian


Inilah alasan kenapa validasi masukan secara saksama dilakukan suatu
tindakan balasan (Countermeasure) untuk melawan serangan dan diperlukan
dibuat suatu prioritas tertinggi ketika mengembangkan Halaman web melalui
ASP.NET . Tipe-tipe serangan antara lain:

Code

injection;

merupakan

suatu

kode

yang

dinjeksikan

sewenang-wenang oleh penyerang pada halaman WEB dalam


kontek sisi keamanan. Sehingga aplikasi dapat berjalan seolah-olah
menggunakan account yang istimewa.

Session hijacking; ketika penyerang mengambil sebuah tanda


authentication dan mengambil alih kendali terhadap pengguna
lainnya. Authentikaasi yang ditangkap tersebut sering disimpan
dalam cookies atau URL. Jika penyerang dapat menangkap
authentication, dia dapat menyebarkan kepada seluruh aplikasi
selama permintaann dilakukan.

Identity spoofing; terjadi ketika seorang penyerang diasumsikan


sebagai pemakai yang sah, sehingga dapat mengakses aplikasi.

Parameter manipulation; data-data yang berasal dari client


menuju server melalui network. Termasuk kedalam format field,
string query, cookies dan header HTTP. Data yang sensitive atau
data yang telah digunakan untuk membuat keputusan keamanan
pada server melewati parameter tanpa proteksi. Sehingga aplikasi

berpotensial sangat peka terhadap informasi yang tersingkap atau


akses yang tidak sah.

Network eavesdropping; meliputi penggunaan jaringan monitoring


software untuk meniru paket data yang dikirim antara browser dan
web server. Ini dapat mendorong pembongkaran aplikasi data yang
spesifik, logon yang dipercaya atau penagkapan authentication
cookies.

Information disclosure; ketika penyerang menyelidiki halaman


web untuk mecari jalan yang menyebabkan kondisi exception.
Keberhasilan yang dilakukan oleh penyerang mendapatkan
informasi yang bermanfaat untuk melakukan koneksi pada
database, nama-nama database, struktur database, bahasa SQL dan
sistim operasi beserta versinya.

gambar 13 Ancaman Umum Aplikasai WEB

Serangan Virus; serangan ini sering tidak diketahui, sehingga


menghabiskan sumber yang tersedia, memperlamabat akses atau
menghentikan aplikasi lain ke server. Virus yang cukup dikenal seperti
worm dan trolan horse.

gambar 14 Posisi Serangan Virus


b. Mempertimbangkan Perancangan
Sebelum merancang halaman web dan pengontrolannya, kenali terlebih dahulu
kunci-kunci sebagai pertimbangan, yaitu:

Pemakaian input validasi pada sisi server,

Mempartisi halaman web (gambar pembatasan web public dan area


keamanan)

Perlindungan tanda kepercayaan dan authentikasi

Mempertimbangkan identitas yang digunakan untuk mengakses


sumber-sumber

Kegagalan dengan aman

Mempertimbangkan otoritas granularas

Menempatkan pengontrol web dan pengontrol pengguna dalam


suatu pemisahan

Menepatkan kode-kode akses terhadap sumber dalam suatu


terpisah

gambar 15 Mempratisi halaman web public dan area keamanan


3.3 Aplikasi pada Server
a. Pemakaian Firewall
Firewall merupakan infrastruktur yang digunakan untuk aplikasi server.
Aplikasi ini bertujuan untuk pemisah antara web server dengan server pada
traffic DCOM dan RPC (gambar 16 firewall configurasi).

gambar 16 Firewall Konfigurasi


b. NET Remoting
Pemakaian chanel HTTP dan komponen host remote didalam ASP.NET. Pada
internal firewall untuk mengizinkan lalulintas HTTP menggunakan port 80
dan dapat digunakan untuk SSL port 443 (gambar konfigurasi firewall untuk
canel HTTP dan TCP)

gambar 17 Konfigurasi Firewall untuk Canel HTTP dan TCP

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>

gambar 19 Halaman Proteksi


Web.config (Application Root)
Ketika ProtectedPage.aspx menemukan penguna yang tidak memiliki
authentication, lansung melakukan pencegahan. Web.config memeriksa melalui
sebuah form
<authentication mode="Forms">
<forms loginUrl="LoginPage.aspx">
<credentials passwordFormat="Clear">

</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" />

<user name="Alice" password="nomalice" />


<user name="Mary" password="contrary" />
</credentials>
</forms>
</authentication>
</system.web>
</configuration>

Web.config (Secret Subdirectory)


File Web.config bermain didalam secret subdirectory sama pentingnya dengan
aturan apliksas. Pernyataan mengikuti otorisasi URL <authorization> <deny
users="?" /> </authorization>
Kode lengkapnya:
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>

4.2 Formulir authentikasi Real-Word


Pola yang diatas tidak realistis, pemasukan nama dan password ditulis lansung didalam tex aplikasi apabila jumlah
pengguna lebih dari seratus. Untuk mengantisipasinya dibuat dan dikumpulkan didalam sebuah database. Saat
penggunaannya melalui web.config lansung membaca data-data yang tersimpan.

gambar 20 Data SQL

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 :

("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)");
kemudian WEB.config-nya melakukan pemeriksaan dengan perintah :
<configuration>
<system.web>
<authentication mode="Forms">
<forms loginUrl="LoginPage.aspx" />
</authentication>
</system.web>
</configuration>
Kode Nama dan Password Penguna disimpan didalam Database
LoginPage.aspx
<%@ Import NameSpace="System.Data.SqlClient" %>
<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>
<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>

Web.config (Application Root)


<configuration>

<system.web>
<authentication mode="Forms">
<forms loginUrl="LoginPage.aspx" />
</authentication>
</system.web>
</configuration>

4.3 Formulir authentikasi dan Role-based Security


Contoh program ini mengabungkan format authentication nama dan password
pengguna yang disimpan didalam SQL Server Database.
Kode Layering Roles Onto Forms Authentication
<%@ 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;
if (identity.Name == "Jeff")
app.Context.User = new GenericPrincipal (identity,
new string[] { "Developer" });
}
}
</script>

Kode Forms Authentication with Role-based Security


LoginPage.aspx
<%@ Import NameSpace="System.Data.SqlClient" %>
<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>
<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 ();

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>

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>

Web.config (Secret Subdirectory)


<configuration>
<system.web>
<authorization>
<allow roles="Manager" />
<deny users="*" />
</authorization>
</system.web>
</configuration>

Kode Configuring URL Authorizations


<configuration>
<! Configuration information for this directory >
<system.web>
<authentication mode="Forms">
<forms loginUrl="/LoginPage.aspx" />
</authentication>
</system.web>
<! Configuration information for the Secret directory >
<location path="Secret">
<system.web>
<authorization>
<allow roles="Manager" />

<deny users="*" />


</authorization>
</system.web>
</location>
</configuration>

4.4 Cookies Lifetime


Cookies lifetime berguna untuk membatasi waktu saat melakukan pembuktian.
Lama batas waktu yang diizinkan sampai 30 menit. Jika saat terdapat kesalahan
saat melakukan login sedangkan yang dicari tidak diketemukan . Atribut ini
dimasukkan kedalam program Machine.config:
<form .. timeout = 30>
Program ini dapat diubah juga kedalam Mechine.config dengan mengubah
batasan waktu seperti 10,800menit.
Programnya:
<configuration>
<system.web>
<authentication mode="Forms">
<forms loginUrl="/LoginPage.aspx" timeout="10080" />
</authentication>
</system.web>
</configuration>

Solusi secara program untuk memodifikasi cookie authentication sebelum


mengembalikan respon. Program dibawah ini modifikasi dari versi OnLogIn yang
telah diatur untuk beberapa hari (dalam program ini 7 hari).
Kode A Shorter-lived Cookie
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";
}

4.5 Keluar dari Aplikasi


Suatu saat hendak keluar dari aplikasi, sebaiknya dilakukan secara sopan. Untuk
itu digunakan form authentikasionsignout. Program cookies ini cukup menahan
serangan dari sniffer.
Listing Program
<asp:Button Text="Log Out" OnClick="OnLogOut" RunAt="server" />

<script language="C#" runat="server">


void OnLogOut (Object sender, EventArgs e)
{
FormsAuthentication.SignOut ();
}
</script>

4.6 Authentication Cookies Securities


Format ini didukung oleh 5 atribut, atribut ini kebanyakan self-explanatory, tetapi
proteksi sudah sepantasnya mendapatsebutan khusus. Jika proteksi untuk cookies
authentication ASP.NET menggunakan identitas authentication para penguna.
Seluruhnya didefault, dimana instruksi ASP.NET di enskrip dan validasi cookies
authentication.

Tabel Attributes of <forms> Element


Attribute

Description

Default

name

Name assigned to authentication


cookies

.ASPXAUTH

loginUrl

URL of the login page

login.aspx

protection

Level of protection (validation and


All
encryption) applied to authentication
cookies

timeout

Lifetime of session authentication


tickets in minutes

30

path

Scope of authentication cookies

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