Hal-hal yang perlu diperhatikan dalam mengembangkan halaman web dengan ASP. Teman-teman yang menggunakan ASP bisa simak langkah-langkahnya.
1. Jangan pernah percaya bahwa masukan pengguna memiliki ukuran yang sesuai atau berisi karakter yang sesuai. Masukan pengguna harus selalu divalidasi sebelum digunakan untuk mengambil keputusan. Pilihan terbaik Anda adalah membuat komponen COM+ yang dapat Anda panggil dari halaman ASP untuk memvalidasi input pengguna. Anda juga dapat menggunakan metode Server.HTMLEncode, metode Server.URLEncode, atau salah satu contoh kode di bagian bawah halaman ini.
2. Jangan membuat string koneksi database di halaman ASP dengan menggabungkan string yang dimasukkan oleh pengguna. Pengguna jahat dapat memperoleh akses ke database dengan memasukkan kode ke dalam input mereka. Jika Anda menggunakan database SQL, gunakan prosedur tersimpan untuk membuat string koneksi database.
3. Jangan gunakan nama akun administrator SQL default sa. Setiap orang yang menggunakan SQL tahu bahwa akun sa itu ada. Buat akun manajemen SQL lain dengan kata sandi yang aman dan terjamin, dan hapus akun sa.
4. Sebelum Anda menyimpan kata sandi pengguna klien, harap gunakan algoritma hash, encode base64, atau gunakan Server.HTMLEncode atau Server.URLEncode untuk mengkodekan kata sandi ini. Anda juga dapat menggunakan salah satu contoh kode di bagian bawah halaman ini untuk memverifikasi karakter dalam rahasia klien.
5. Jangan menempatkan nama akun administratif atau kata sandi dalam skrip administratif atau halaman ASP.
6. Jangan membuat keputusan dalam kode Anda berdasarkan header permintaan, karena data header dapat dipalsukan oleh pengguna jahat. Selalu enkode data permintaan sebelum menggunakannya atau verifikasi karakter yang dikandungnya menggunakan contoh kode di bawah.
7. Jangan menyimpan data keamanan dalam cookie atau menyembunyikan kolom input di halaman web.
Selalu gunakan Secure Sockets Layer (SSL) dengan aplikasi berbasis sesi untuk menghindari risiko pengiriman cookie sesi tanpa mengenkripsinya. Jika cookie sesi tidak dienkripsi, pengguna jahat dapat menggunakan cookie sesi dalam satu aplikasi untuk mendapatkan akses ke aplikasi lain dalam proses yang sama.
8. Saat menulis aplikasi ISAPI, filter, atau objek COM+, harap waspada terhadap buffer overflow karena ukuran variabel dan data. Waspadai juga masalah kanonikalisasi yang mungkin timbul dari interpretasi, seperti menafsirkan nama jalur absolut sebagai nama jalur atau URL relatif.
9. Ketika aplikasi ASP yang berjalan di apartemen single-threaded (STA) dialihkan ke apartemen multi-threaded (MTA), token peniruan identitas akan menjadi usang. Hal ini dapat menyebabkan aplikasi berjalan tanpa peniruan identitas, sehingga memungkinkannya berjalan secara efektif dengan identitas proses yang memungkinkan akses ke sumber daya lain. Jika Anda harus mengganti model threading, nonaktifkan dan hapus instalan aplikasi sebelum melakukan perubahan.
contoh kode
Contoh kode ini berisi fungsi yang menghapus karakter yang berpotensi membahayakan dari string yang dikirim ke fungsi tersebut. Dalam kedua contoh di atas, tentukan halaman kode untuk memastikan pengkodean yang benar. Contoh berikut menggunakan Microsoft Visual Basic® Scripting Edition (VBScript):
<%@ BAHASA=VBScript %> <% Respon.CodePage = 1252 Response.Write(Halo, & HapusKarakter Buruk(Permintaan.Form(Nama Pengguna))) Response.Write(<BR>Inilah sebabnya Anda menerima kesalahan :) Fungsi HapusKarakter Buruk(strTemp) RegEx redup Setel regEx = RegExp Baru regEx.Pola = [^/s/w] regEx.Global = Benar HapusBadCharacters = regEx.Replace(strTemp, ) Fungsi Akhir %> |
Contoh berikut menggunakan Microsoft JScript®:
<%@ BAHASA=JScript %> <% Respon.CodePage = 1252; Response.Write(Halo, + HapusKarakter Buruk(Permintaan.Form(Nama Pengguna))); Response.Write(<BR>Inilah sebabnya Anda menerima kesalahan :); fungsi HapusKarakter Buruk(strTemp) { strTemp = strTemp.replace(/[^/s/w]/g,); kembalikan strTemp; } %> |