Anda di halaman 1dari 21

5.

SQL SERVER SECURITY

Obyektif :
Setelah menyelesaikan bahasan ini, diharapkan melakukan hal berikut:
1. Memahami security principals dan securables di SQL Server
2. Memahami mode otentikasi di SQL Server
3. Memahami users dan logins istimewa di SQL Server
4. Dapat menerapkan password policy yang aman di SQL Server
5. Memahami dan mencegah SQL Injection di SQL Server

5.1 Memahami Security Principals dan Securables di SQL Server


Entitas yang dapat meminta/ memiliki akses ke server, database, atau schema disebut
sebagai security principals. Sedangkan item yang dapat diamankan untuk mengontrol
akses terhadap item tersebut disebut securables.
Security principals dapat digolongkan menjadi 2 kelompok yaitu:
 Indivisible principals adalah sebuah entitas yang tidak bergantung terhadap entitas
lainnya. Contohnya yaitu SQL login dan Windows login.
 Collection principals adalah principal yang merepresentasikan sekelompok entitas
yang diperlakukan sebagai sebuah kesatuan. Contoh dari principal ini yaitu Windows
group.
Terdapat tiga level keamanan yang dapat diolah pada security principals SQL Server,
yaitu Windows, SQL Server, dan database. Pada masing-masing level terdapat lagi
security principals yang dapat diolah. Berikut ini principals yang terdapat pada masing-
masing tingkatan.
 Windows level principals
o Domain logins
o Local system logins
 SQL Server level principals
o SQL Server login
o Windows login
 Database level principals
o Users
o Roles
o Applicaition roles
Securables adalah semua resources dalam SQL Server yang dapat diatur hak
aksesnya. Contoh securable yaitu sebuah tabel. Terdapat tiga tingkat cakupan dari
securables yaitu server, database, dan schema. Berikut ini securables pada masing-masing
tingkatan.
 Server
o SQL Server instance

o Endpoint

o Login

o Server role

o Database

 Database

o Application role

o Assembly

o Asymmetric key

o Certificate

o Contract

o Fulltext catalog

o Fulltext stoplist

Page 2
o Message type

o Remote Service Binding

o (Database) Role

o Route

o Schema

o Search property list

o Service

o Symmetric key

o User

 Schema

o Type

o XML schema collection

o Object. Berikut ini yang termasuk ke dalam object pada schema:

 Aggregate
 Function
 Procedure
 Queue
 Synonym
 Table
 View
 External Table

Page 3
5.2 Mode Otentikasi di SQL Server
Terdapat dua macam mode otentikasi pada SQL Server yaitu:
 Mode otentikasi Windows: Penggunaan mode ini paling cocok ketika database
hanya diakses dalam satu lingkup organisasi.
 Mode otentikasi SQL Server dan Windows (mixed mode): Penggunaan mode ini
paling cocok ketika database juga diakses oleh pengguna yang berada di luar
lingkup suatu organisasi (diluar domain Windows) atau pun pengguna yang tidak
menggunakan perangkat Windows.

5.2.1 Mode Otentikasi Windows


Dengan menggunakan mode otentikasi Windows, pengguna dapat login ke
SQL Server baik dengan menggunakan user account maupun group acccount. Mode
otentikasi Windows ini lebih memudah user untuk masuk ke dalam SQL Server
karena user tidak perlu untuk mengingat username SQL Server login dan password-
nya.
Bila user menggunakan otentikasi Windows, SQL Server secara otomatis
mengotentikasi pengguna berdasarkan nama akun pengguna atau keanggotaan grup
mereka. Jika admin telah memberi pengguna atau akses grup pengguna ke database,
user secara otomatis diberikan akses ke database tersebut. Secara default, beberapa
local account dikonfigurasi untuk menggunakan SQL Server. Akun tersebut adalah
akun grup Administrator lokal dan akun pengguna Administrator lokal
(Administrator disertakan karena merupakan anggota grup Administrators secara
default). Akun lokal ditampilkan sebagai BUILTIN \ <AccountName> atau
COMPUTERNAME \ <AccountName> di SQL Server Management Studio Sebagai
contoh, Administrator ditampilkan sebagai BUILTIN \ Administrators.

5.2.2 Mode Otentikasi Windows dan SQL Server (Mode Campuran)


Dengan keamanan campuran (mixed security), pengguna menggunakan
otentikasi Windows dan login SQL Server. Login SQL Server terutama untuk
pengguna di luar perusahaan, seperti mereka yang mungkin mengakses database dari
Internet. Anda dapat mengkonfigurasi aplikasi yang mengakses SQL Server dari

Page 4
Internet untuk menggunakan akun tertentu secara otomatis atau untuk meminta
pengguna memasukkan ID masuk dan kata sandi SQL Server.

5.2.3 Konfigurasi Mode Otentikasi


Untuk membuat dan menggunakan SQL login, SQL Server harus dijalankan
dalam mode campuran (mixed mode). Apakah SQL Server berjalan dalam mode
campuran atau mode Windows ditentukan oleh registry entry. Administrator dapat
memodifikasi registry entry ini dengan SQL Server Management Studio atau dengan
menggunakan REGEDIT dari opsi Start ➢ Run. Gambar di bawah menunjukkan
entri Registri ini. Lokasi penuh pada contoh default SQL Server 2012 adalah sebagai
berikut:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft
SQL Server\MSSQL10.SQLEXPRESS\MSSQLServer
Jika value data dari LoginMode diset ke 1, SQL Server ada dalam mode
otentikasi Windows sedangkan jika diset ke 2, SQL Server dalam mode otentikasi
campuran. SQL Server instance harus di-restart setelah melakukan perubahan mode
otentikasi.

Gambar 5.1 Mengubah mode otentikasi dengan menggunakan registry entry

Langkah-langkah yang dilakukan untuk mengkonfigurasi mode otentikasi


melalui SQL Server Management Studio yaitu sebagai berikut:
1. Buka aplikasi SQL Server Management Studio.

Page 5
2. Koneksikan SQL Server dengan Database Engine
3. Klik kanan pada SQL Server instance yang akan dikonfigurasi dan pilih
Properties.
4. Pilih Security page Select the Security page to view the authentication
mode settings.

Gambar 5.2 Konfigurasi mode otentikasi dengan menggunakan SSMS

5. Pastikan bahwa mode otentikasi yang terpilih SQL Server dan Windows
Authentication Mode.
6. Klik OK untuk menyimpan perubahan.

Jika Anda melihat pesan yang meminta dilakukan restart untuk


mengaplikasikan perubahaan konfigurasi, klik kanan pada SQL Server instance dan
pilih Restart.

Page 6
Tugas
Manakah mode otentikasi yang lebih baik antara mode Windows dan
mode campuran? Sertakan alasannya!

5.3 Logins dan Users Istimewa di SQL Server


Sebagaimana yang telah dibahas sebelumnya bahwa SQL Server memiliki 2 metode
otentikasi yang berarti terdapat 2 jenis login server. Pengguna bisa login Windows dengan
menggunakan domain account atau local account, local group account atau universal dan
global domain group account. Pengguna bisa juga menggunakan login SQL Server
dengan menentukan ID login dan password yang unik. Beberapa login dikonfigurasi
secara default, yaitu local Administrators, local Administrator, sa.
Penggunaan user untuk mempersempit ruang lingkup akses ke database. Beberapa
users dikonfigurasi secara default, termasuk the dbo user, dan the guest user.
Pada bagian ini ada dibahas lebih lanjut mengenai logins dan users istemewa
tersebut.

5.3.1 Administrators Group


Administrators group adalah sebuah grup lokal dalam server database.
Anggota dari grup ini biasanya akun local Administrator user dan user lainnya yang
telah diatur sebagai administrator dalam lokal sistem. Di SQL Server, grup ini
diberikan hak akses sebagai sysadmin server role secara default.

5.3.2 Administrator User Account


Administrator adalah sebuah user account lokal di server. Akun ini
memberikan hak akses sebagai administrator pada sistem. Jika SQL Server
terpasang di Windows domain, maka administrator account biasanya memiliki hak
akses secara domain juga. Pada SQL Server, akun ini mendapatkan hak akses
sysadmin server role secara default.

Page 7
5.3.3 Sa Login
Sa login adalah aku sistem administrator si SQL Server. Dengan model
keamanan baru yang telah terintegrasi dan diperluas, sa tidak lagi dibutuhkan. Sa
disediakan untuk kompabilitas terhadap SQL Server versi sebelumnya. Seperti login
administrator lainnya, sa diberikan server sysadmin role secara default. Saat Anda
menginstal SQL Server, login sa tidak diberi kata sandi. Untuk mencegah akses
yang tidak sah ke server, kata sandi harus benar-benar kuat, dan harus diganti secara
berkala.

5.3.4 Guest User


Guest User adalah pengguna khusus yang dapat Anda tambahkan ke database
untuk memungkinkan seseorang dengan login SQL Server yang valid untuk
mengakses database. Pengguna yang mengakses database dengan guest account
menganggap identitas pengguna tamu dan mewarisi semua hak istimewa dan hak
akses akun tamu. Misalnya, jika Anda mengonfigurasi akun GOTEAM untuk
mengakses SQL Server, GOTEAM dapat mengakses database apa pun dengan info
masuk tamu, dan saat GOTEAM melakukannya, orang yang masuk di bawah
GOTEAM diberikan semua hak akses akun tamu. Jika Anda mengkonfigurasi grup
Windows DEVGROUP dengan akses tamu, Anda dapat menyederhanakan
administrasi karena setiap pengguna yang merupakan anggota grup akan dapat
mengakses database apa pun sebagai tamu.
Guest user adalah user khusus yang dapat ditambahkan ke database untuk
memungkinkan seseorang dengan login SQL Server yang valid untuk mengakses
database. User yang mengakses database dengan guest account mewarisi semua
privillages dan permission yang dimiliki oleh guest user.
Secara default, guest user terdapat di database model. Karena database model
adalah template untuk semua database yang dibuat, semua database baru memiliki
guest user. Guest user tidak dapat dihapus namun bisa dinonaktifkan kecuali pada
database master dan tempdb. Hal ini tidak menjadi masalah karena guest user
memiliki privillage dan permission yang terbatas di database tersebut.

Page 8
Berikut ini beberapa hal yang perlu diketahui mengenai guest user:
 Guest user adalah anggota dari public serevr role dan mewarisi
permission dari role tersebut.

Page 9
 Guest user harus ada di database sebelum seseorang dapat mengakses
database tersebut sebagai guest.

5.3.5 Working with the dbo User


Database owner atau dbo adalah tipe user yang spesial dan memiliki privillage
yang istimewa juga. User yang membuat database adalah database owner. Dbo
memiliki hak akses penuh terhadap database dan bisa memberikan hak akses juga ke
user lainnya. Karena anggota dari sysadmin server role dipetakan secara otomasi
sebagai dbo, login dengan sysadmin role dapat melakukan segala hal yang bisa
dilakukan oleh dbo.

5.4 Mengamankan Password di SQL Server


Dimulai dengan Microsoft SQL Server 2005, Microsoft memperkenalkan tingkat
keamanan password baru di dalam produk mereka, karena ini adalah versi pertama
Microsoft SQL Server yang dapat menggunakan domain policies untuk memastikan
bahwa password untuk akun SQL Authentication cukup aman dan kuat, serta memenuhi
standar perusahaan. Secara default, semua akun SQL Authentication yang dibuat dalam
SQL Server Instance harus memenuhi domain policies. Administrator jika perlu dapat
menghapus batasan ini dengan mengedit akun SQL Authentication.
Dalam Microsoft SQL Server, dua pengaturan dapat diterapkan ke setiap SQL
Authentication Login, yang ditunjukkan pada Gambar 5.3
1. Pengaturan "Enforce password policy" digunakan untuk memastikan bahwa
password memenuhi persyaratan kompleksitas yang dibutuhkan oleh domain
policy atau tidak.
2. Pengaturan "Enforce password expiration" memberitahu SQL Server bahwa
masa aktif password untuk SQL Authentication mengikuti pengaturan domain
policy atau tidak.
Opsi "User must change password at next login", yang nonaktif pada Gambar 5.3
hanya akan tersedia bila password login diatur ulang secara manual dan pengaturan
"Enforce password policy" diaktifkan untuk login tersebut.

Page 10
Menggunaan domain policy untuk memastikan bahwa password login telah
memenuhi kebijakan yang ada memiliki beberapa keuntungan, terutama dalam proses
audit. Tanpa menggunakan domain policy, Administrator perlu memeriksa secara manual
apakah password login telah memunihi standar yang telah ditetapkan atau belum.

Gambar 5.3 Mode otentikasi SQL login yang diharuskan mengikuti


password policy

Query sys.sql_logins akan menunjukkan login yang telah dan belum sesuai dengan
password domain policy:
SELECT name, is_policy_checked
FROM sys.sql_logins

5.4.1 Windows Authentication Group Policies


Ada total enam kebijakan yang dapat diterapkan di Windows yang
mempengaruhi domain/local policy. Namun, hanya lima kebijakan yang dapat
digunakan di Microsoft SQL Server. Kebijakan yang tidak terkait dengan SQL

Page 11
Server adalah kebijakan "Store passwords using reversible encryption". Dengan
kebijakan ini, password akan disimpan dengan menggunakan proses enkripsi
sebanyak dua kali. Mengaktifkan kebijakan ini, memungkinkan untuk penyerang
mengunduh daftar semua pengguna dan kata kuncinya, kemudian memecahkan
enkripsi pada kata kunci tersebut dan akhirnya memiliki akses penuh ke setiap nama
pengguna dan kata sandi pengguna. Karena masalah keamanan tersebut, kebijakan
tersebut dinonaktifkan secara default.
Kelima password policies yang digunakan SQL Server yaitu sebagai berikut:
1. Enforce password history;
2. Maximum password age;
3. Minimum password age;
4. Minimum password length;
5. Password must meet complexity requirements.
Kebijakan "Enforce password history" pada domain (atau komputer lokal)
bukanlah Boolean, Ini adalah jumlah password lama untuk akun yang harus dilacak
SQL Server sehingga password yang sama tidak dapat digunakan kembali.
Pengaturan ini memiliki rentang 0 hingga 24 password. Semakin banyak password
yang tersimpan, semakin besar kemungkinan pengguna melupakan kata sandinya,
namun semakin kecil kemungkinan seseorang masuk ke sistem melalui password
lama. Maksimal password yang dapat disimpan yaitu 24 password.
Kebijakan "Maximum password age" digunakan untuk menentukan maksimal
jumlah hari sebelum sistem meminta pengguna untuk mengganti kata kuncinya. Jika
kata kunci tidak berubah, pengguna tidak akan bisa login ke instance database.
Pengaturan ini menerima nilai dari 0 (tidak pernah habis masa berlakunya) hingga
999 hari, dengan nilai default 42 hari.
Kebijakan "Minimum password age" digunakan untuk mengatur berapa hari
sejak password telah diubah hingga dapat diubah lagi. Pengaturan ini mencegah
pengguna terlalu cepat mengubah password mereka dan akan ‘memakan’ jumlah
password yang ditentukan oleh pengaturan "Enforce password history". Tanpa
pengaturan ini, atau jika pengaturan ini diset di angka 0, ketika password pengguna
kadaluarsa, pengguna cukup mengganti kata sandi 24 kali dan kemudian

Page 12
mengubahnya menjadi kata kunci yang sama. Pengaturan ini menerima nilai dari 0
sampai 998 hari, dengan nilai default 1. Pengaturan ini memiliki batas atas satu hari
lebih rendah daripada pengaturan untuk "Maximum password age." Jika diberikan
nilai yang sama atau lebih tinggi dari setelan "Maximum password age", maka
pengguna tidak akan bisa login sampai password mereka kadaluarsa.
Kebijakan "Minimum password length" digunakan untuk mengatur banyak
karakter terdapat pada password agar password dapat diterima. Nilainya dari 0
(password kosong) sampai 14 karakter, dengan nilai default 7 karakter. Biasanya
dianjurkan untuk meningkatkan nilai ini dari default tujuh ke angka yang lebih tinggi
seperti sembilan karakter. Meskipun ini akan membuat kata kunci lebih sulit diingat
pengguna, ini juga akan membuatnya semakin sulit ditebak oleh penyerang.
Kebijakan "Password must meet complexity requirements" memberitahu SQL Server
bahwa semua password harus dianggap "kuat". Ada beberapa persyaratan untuk
memiliki password yang kuat. Secara default, aturan yang terdapat pada policy ini
yaitu:
1. Password tidak boleh berisi nama pengguna di dalamnya.
2. Password harus mengandung karakter dari setidaknya tiga dari empat kategori ini:
a. Huruf kecil (a sampai z);
b. Huruf kapital(A sampai Z);
c. Angka (0 sampai 9);
d. Simbol (misal $, #, @,%, ^).

Bila pengaturan "Enforce password policy" diaktifkan untuk Login Otentikasi


SQL, login tersebut harus memenuhi kriteria pada kebijakan “Enforce password
history,” “Minimum password length,” “Minimum Password Age,” dan “Password
must meet complexity requirements”.
Bila pengaturan "Enforce password expiration" diaktifkan untuk Login
Otentikasi SQL, login tersebut harus memenuhi kriteria pada kebijakan "Maximum
password age".
Berikut ini langkah-langkah untuk membuat password policies di Windows:
1. Pilih Start ➢ Windows Administartive Tools ➢ Local Security Policy.

Page 13
2. Pada Security Setting, pilih Account Policy ➢ Password Policy.
3. Klik kanan pada kebijakan yang akan dikonfigurasi, pilih Properties.
4. Masukkan nilai sesuai dengan aturan/kebijakan yang telah ditetapkan.

Tugas
Buatlah password policy untuk perusahaan x pada Local/Domain Security
Policy, berikan alasan yang konkrit untuk masing-masing kebijakan/policy yang
telah Anda tentukan.

5.5 Mengamankan Login SA


5.5.1 Mengganti Nama sa Login
Sejak SQL Server 2005, pengguna bisa mengubah nama akun SA. Ini adalah
sebuah langkah pengamanan yanv penting untuk dilakukan, terutama jika SQL
Server dapat di akses secara publik melalui internet. Untuk mengubah nama akun
SA dapat dilakukan dengan query ALTER LOGIN seperti pada query di bawah.
Setelah mengubah nama akun SA, SQL Server instance perlu di-restart untuk
mengimplementasikan perubahan nama tersebut.
T-SQL showing the renaming of the SA account:
ALTER LOGIN sa
WITH NAME = SomeOtherName

Dengan mengubah nama akun SA menjadi nama lain yang tidak standar,
akan mengurangi tingkat serangan SQL Server Instance. Serangan akan berkurang
karena kita sekarang telah menyingkirkan pengetahuan penyerang tentang nama
akun yang akan masuk. Penyerang sekarang perlu menemukan bukan hanya
password, tapi juga nama akun tersebut dan juga membuat serangan sangat, sangat
sulit untuk diselesaikan.
Penyerang biasa akan memulai dengan username SA dan akan mencoba
dengan password yang banyak sebelum mulai mencoba berbagai nama pengguna.
Semakin panjang username adalah semakin lama waktu dibutuhkan penyerang
untuk mendapatkan akses ke instance database. Alasan terbesar bahwa serangan ini
akan memakan waktu lama adalah bahwa SQL Server mengembalikan pesan

Page 14
kesalahan yang sama jika nama pengguna dan kata kunci salah digunakan atau jika
hanya nama pengguna yang salah digunakan. Dalam kedua kasus error 18456 akan
dikembalikan, dengan pesan kesalahan "Login failed for user '{username}'" di mana
{username} adalah nama pengguna yang mencoba untuk login ke database instance.

Gambar 5.4 Pesan eror ketika login gagal

5.5.2 Menonaktikan sa Login


Salah satu prosedur keamanan penting yang biasanya tidak dilakukan oleh
administrator adalah menonaktifkan akun SA. Dengan mengaktifkan akun ini,
administrator telah melakukan setengah pekerjaan untuk penyerang karena nama
pengguna akun SA tentunya telah diketahui oleh penyerang. Ini berarti penyerang
hanya perlu mencari tahu password akun SA. Walaupun penyerang telah
memperoleh password akun SA, penyerang tidak akan bisa masuk dengan akun SA
yang telah dinonaktifkan.

Page 15
Gambar 5.5 Menonaktifkan akun sa

Jika SQL Server Instance dikonfigurasi hanya untuk Windows otentikasi,


maka tidak perlu untuk menonaktifkan akun SA karena akun SA adalah SQL Server
otentikasi dan saat hanya Windows otentikasi digunakan, akun SA tidak dapat
digunakan.
Berikut ini langkah-langkah untuk menonaktifkan akun sa:
1. Koneksikan SSMS dengan database engine.
2. Pada Object Explorer perluas/expand SQL Server instance ➢ Security ➢
Logins
3. Klik kanan pada akun sa, pilih Properties.
4. Pilih page Status dan ganti login status menjadi disable.
Menonaktifkan akun sa bias juga dilakukan dengan menggunakan query.
Berikut ini query untuk menonaktifkan akun sa.
ALTER LOGIN [sa] DISABLE

Page 16
5.6 SQL Injection
SQL injection merupakan salah satu teknik hacking yang paling sering digunakan
untuk menyerang sebuah aplikasi. SQL injection memanfaatkan celah keamanan yang
terdapat dalam lapisan database sebuah aplikasi. Celah ini tercipta ketika input dari
pengguna tidak disaring dengan benar, sehingga memungkinkan pengguna untuk
memasukkan query sql yang dapat membahayakan database.
Sebagai contoh, seorang Back-End aplikasi web membuat membuat sebuah dynamic
SQL yang mengeksekusi query:
SELECT * FROM Orders WHERE OrderId=25

Script SQL ini akan dieksekusi saat pelanggan membuka detail pemesanan yang
telah ia lakukan. Nilai dari OrderId pada query di atas diambil dari string query di
URL, http://www.yourcompany.com/orders/orderhistory.aspx?Id=25. Permasalahan
akan timbul jika penyerang mengubah string kueri menjadi sesuatu seperti
"/orderhistory.aspx?id=25; delete from Orders;" maka query yang akan dijalakan di SQL
Server yaitu:
SELECT * FROM Orders WHERE OrderId=25; delete from Orders;

Pada query di atas terlihat bahwa tanda titik koma ”;” mengakhir statement pertama,
kemudian terdapat query selanjutnya yang akan di jalankan oleh SQL Server.
Query pertama akan berjalan normal tanpa ada kesalahan yang dihasilkan, namun
saat akan meiihat isi tabel Orders, tidak ada data yang akan ditampilkan karena telah
terhapus oleh query yang telah dimasukkan oleh pengguna.

5.6.1 SQL Injection di Stored Procedure


Walaupun penyerangan dengan menggunakan SQL Injection umumnya
terjadi di level aplikasi, seorang administrator juga perlu mengetahui cara
pencegahan SQL Injection di level database. Salah satu cara penanganan sq injection
yaitu dengan menggunakan store procedure untuk query-query yang dinamis
Perlu diperhatikan bahwa store procedure tidak sepenuhnya aman dari SQL
Injection. Berikut ini adalah contoh store procedure yang tidak aman dan masih bisa
diserang dengan menggunakan SQL injection.

Page 17
Gambar 5.6 Contoh stored procedure yang bisa di injeksi

Store procedure di atas digunakan untuk mengembalikan data employee


berdasarkan nama yang masukkan pada parameter store procedure tersebut.

Gambar dibawah merupakan contoh sql injection langsung ke store


procedure-nya.

Gambar 5.7 Output ketika stored procedure dieksekusi dengan sql injection
di dalamnya

Query yang di eksekusi pada store procedure di atas berdasarkan parameter


yang telah dimasukkan oleh penyerang yaitu sebagai berikut:

Page 18
Gambar 5.8 Query dinamis pada store procedure yang dijalankan di SQL
Server

Pada gambar di atas terlihat bahwa tanda petik satu yang double (‘’) pada
variable skalar @var akan menjadi petik satu pada saat proses eksekusi query.
Tanda petik satu pada akhir “ -- data on table sample has been deleted!!! ”
merupakan petik yang digunakan sebagai penutup dari first_name pada query select
di store procedure. Perlu ditambahkan “--” (komentar pada SQL Server) agar tidak
terjadi error pada saat ekseksi.

5.6.2 Menggunakan sp_executesql untuk Mengamankan Store Procedure


Seperti halnya pengamanan database pada level aplikasi, pengamanan store
procedure juga dilakukan dengan melakukan parameterisasi pada query dinamis di
store procedure. Hal ini dapat dilakukan dengan menggunakan store procedure
bawaan dari SQL Server yaitu sp_executesql.
Berikut ini contoh store procedure yang menggunakan sp_executesql.

Gambar 5.10 Stored procedure yang aman dari sql injection

Pada gambar di atas, terlihat bahwa dilakukan parameterisasi pada query


yang akan dieksekusi. Untuk menguji apakah store procedure tersebut telah aman

Page 19
dari sql injection, dilakukan testing dengan menggunakan query seperti pada
contoh sebelumnya.

Gambar 5.11 SQL injection gagal dilakukan pada stored procedure

Pada gambar di atas terlihat bahwa query pertama yaitu query select
berdasarkan nama gagal tidak mengembalikan result karena namanya tidak
terdapat dalam database. Query selanjutnya, yaitu menghapus tabel sample tidak
dilakukan karena eksekusi pada store procedure telah menggunakan
sp_executesql.

Gambar 5.12 Pemanggilan stored procedure mengembalikan nilai sesuai


dengan parameternya.

Gambar di atas merupakan contoh pemanggilan store procedure yang


berhasil. Terlihat bahwa store procedure mengembalikan record dengan
first_name = ‘Alexander’.

Page 20
Tugas
Buatlah store procedure yang dapat diinjeksi dan aman dari sql
injection. Store procedure harus mengembalikan tabel yang berisi nama pekerja
dan nama departemen berdasarkan manager pekerja tersebut. Injeksi yang
dilakukan yaitu injeksi yang mengembalikan daftar semua akun login yang ada
dalam SQL Server instance yang sedang diserang.

Page 21

Anda mungkin juga menyukai