Direkomendasikan: Berbicara tentang Direktori Pohon DHTML XML ASP CSS Tree Directory Menampilkan Program Masalah Deskripsi: Tabel data terkait sendiri sering muncul dalam proyek kami. Jika kita melihatnya dari perspektif keseluruhan, seluruh tabel disajikan sebagai struktur data pohon (untuk kasus yang kompleks, itu mungkin menjadi grafik). Saat kami melakukan tabel ini
Dalam pemrograman ASP, otentikasi identitas dapat dikatakan sering digunakan. Tetapi bagaimana kita bisa mencapai keamanan otentikasi?
Halaman pengiriman formulir: sub.htm
| Berikut ini adalah konten yang dikutip: <Html> <head> <title> Login Administrator </title> <body> <Form name = Form1 Metode = Posting Tindakan = Sub.asp> <p> Administrator: <input type = nama teks = ukuran UserId = 25 maxlength = 20> kata sandi: <Input Tipe = Nama Teks = Ukuran Pass = 12 MaxLength = 20> <Input Type = Kirim Nama = Kirim Nilai = Kirim> </p> </form> </body> </html> |
| Berikut ini adalah konten yang dikutip: Program sub.asp <% Menerima data dari formulir user = request.from (userid) Periksa apakah data yang dikirimkan dalam formulir kosong (halaman formulir dapat dikendalikan oleh JavaScript atau VBScript, tetapi jangan lupa untuk mengendalikannya di sini! Jika pengguna = lalu Buka halaman prompt kesalahan! response.redirect err1.htm Kalimat ini mungkin tidak berguna, tetapi lebih baik menambahkannya! respons.end akhiri jika pass = request.dari (pass) Jika pass = lalu response.redirect err2.htm respons.end akhiri jika Bergabunglah dengan database file = server.mappath (database Anda) Set Conn = Server.CreateObject (AdodB.Connection) dr = driver = {Microsoft Access Driver (*.mdb)}; dbq = & file Conn.Open DR Set RS = Server.CreateObject (ADODB.Recordset) Kuncinya adalah bahasa SQL di sini SQL = SELECT * Dari tabel di mana pengguna = & pengguna & dan pass = & pass & Rs.Open SQL Jika tidak rs.eof maka Jika ditemukan, buka halaman manajemen reponse.redirect login.asp kalau tidak Jika tidak ditemukan, masukkan halaman kesalahan response.write err3.htm akhiri jika %> |
Semua orang merasa bahwa kode di atas harus baik -baik saja, tetapi di sini ada risiko keamanan yang serius:
Jika saya ingin masuk ke administrator, saya dapat memasukkannya di kotak input Formulir Sub.htm:
Masukkan kotak teks pertama: A atau 1 = 1 atau atau =
Masukkan kotak teks kedua: A atau 1 = 1 atau atau =
Kirimkan, Anda akan melihat ... woo, dengarkan aku, apakah baik untuk dilakukan, batu bata akan dilemparkan lagi ...
A dan 1 adalah karakter apa pun
Seseorang mungkin bertanya mengapa Anda memasukkan karakter ini sebagai administrator? ?
Faktanya, karakter -karakter ini merupakan penipuan bagi bahasa SQL dalam program Anda dan berhasil masuk.
Semua orang melihat: Mulai program SQL adalah catatan yang menanyai tabel dan memenuhi pengguna = & pengguna & dan lulus = & lulus & ketentuan.
SQL = SELECT * Dari tabel di mana pengguna = & pengguna & dan pass = & pass &
Saya memasukkan kode di atas dan itu menjadi:
SQL = SELECT * Dari tabel di mana pengguna = A atau 1 = 1 dan pass = A atau 1 = 1
Mari kita lihat, bisakah ada alasan untuk tidak masuk? ? Beri saya alasan untuk tidak masuk, pertama!
Bidang lulus pengguna di atas adalah jenis karakter dan jika itu adalah tipe numerik, hal yang sama benar!
Larutan:
1. Metode alternatif fungsi:
Gunakan REPLACE untuk mengganti input konten oleh pengguna dengan karakter khusus untuk mencapai tujuan kontrol! sql = pilih * dari tabel di mana pengguna = & ganti (pengguna ,,) & dan lulus = & ganti (lulus,) &
Metode ini hanya dapat menggantikan satu karakter sekaligus. Faktanya, karakter berbahaya tidak hanya, tetapi juga karakter seperti>, <, &, % harus sepenuhnya dikendalikan. Tapi apa yang harus saya lakukan jika saya sepertinya tidak kompeten dengan fungsi ganti? ?
2. Metode Kontrol Program
Gunakan program untuk mengontrol semua konten yang dimasukkan oleh klien, sehingga Anda dapat sepenuhnya mengontrol karakter atau kode berbahaya yang dimasukkan oleh klien. Saya akan melakukan metode ini!
| Berikut ini adalah konten yang dikutip: <% Tangkap konten formulir yang dikirimkan oleh pengguna user = request.prom (pengguna) pass = request.dari (pass) ... Kontrol siklus dimulai untuk i = 1 ke len (pengguna) Gunakan fungsi tengah untuk membaca karakter pada posisi I pada pengguna variabel US = mid (pengguna, i, 1) Perbandingan karakter baca Jika kami = atau US =% atau US = <atau US => atau US = & kemudian Jika karakter di atas terkandung, pesan kesalahan akan terjadi. Karakter khusus di atas tidak dapat terkandung. response.redirect err2.htm respons.end akhiri jika Berikutnya ... %> |
Bagikan: Parse ASP dan prosedur tersimpan Ada banyak artikel tentang ASP dan prosedur tersimpan, tetapi saya ragu para penulis benar -benar mempraktikkannya. Saya membaca banyak informasi yang relevan ketika saya masih di awal dan menemukan bahwa banyak metode yang diberikan tidak terjadi dalam praktiknya. Untuk aplikasi sederhana, ini