Aturan dasar untuk pemrograman asp pemula 1. Kesalahan umum yang dilakukan pemula
Saya melihat kesalahan dasar yang umum pada kode banyak postingan di forum, yaitu jenis kolom yang salah.
Program dan database saling berhubungan erat. Bidang database tipe teks atau tipe waktu menggunakan tanda kutip tunggal.
Misalnya, pernyataan yang dimodifikasi berikut ini:
conn.execute update Hitungan set counts='&counts&' di mana num=&num& dan Atime='&now()&'
Sisi kiri tanda sama dengan adalah nama field, dan sisi kanan tanda sama dengan adalah nama variabel yang dimasukkan. Bidang counts bertipe teks, jadi tanda kutip tunggal harus ditambahkan sebelum dan sesudah penulisan baik itu menulis atau menanyakan. Pada pernyataan pencarian selanjutnya, field num bertipe numerik, jadi tidak ada tanda kutip tunggal sebelum dan sesudahnya.
Yang paling penting adalah melakukan kueri berdasarkan ID. Bidang ID unik dan bertipe numerik. Jelas, tidak boleh ada tanda kutip tunggal sebelum dan sesudah saat menanyakan nomor ID.
conn.execute update Counts set counts='&counts&' di mana id='&id&' 'cara penulisan yang salah
conn.execute update Counts set counts='&counts&' di mana id=&id 'Cara menulis yang benar
2. AKSES koneksi database
Biasanya ada dua cara untuk terhubung ke database. Pemula pada dasarnya tidak tahu cara mana yang harus digunakan, atau cara mana yang harus digunakan dalam keadaan apa, atau mereka tidak mengetahui prinsip keduanya.
① Terhubung langsung ke file database
Setel koneksi = Server.CreateObject(ADODB.Connection)
samb.Buka DRIVER={Microsoft Access Driver (*.mdb)};
②Hubungkan file database melalui sumber data
Setel koneksi = Server.CreateObject(ADODB.Connection)
samb.Penyedia Terbuka=Microsoft.Jet.OLEDB.4.0; Sumber Data=&Server.MapPath(database/yanhang.mdb)
Nah yang mana yang lebih bagus tentunya yang kedua, karena yang pertama browser client langsung membaca databasenya, jadi keamanannya jauh berbeda. yang menggunakan data server Alat sumber terhubung dan tidak ada hubungannya dengan klien, sehingga database tidak akan terekspos ke klien, dan faktor keamanannya jauh lebih tinggi.
Penerapan program terkait database ACCESS: ① Terhubung langsung ke file database
samb.Buka DRIVER={Microsoft Access Driver (*.mdb)};
Untuk metode koneksi database ini, tambahkan pernyataan:
set rs=server.createobject(adodb.recordset) '(penulisan yang benar)
rs.open pilih * dari dndj,sambungan,1,3
rs.tambahkan baru
rs(bh) = bh
rs(bm) = bm
rs(xm) = xm
rs(xsq) = xsq
rs.update
rs.tutup
atur rs=tidak ada
set rs=server.createobject(adodb.recordset) '(salah penulisan)
sql=masukkan ke nilai dndj(bh,bm,xm,xsq)('bh','bm','xm','xsq')
rs.open sql,sambungan,1,3
Penerapan program terkait database ACCESS: ② Hubungkan file database melalui sumber data
samb.Penyedia Terbuka=Microsoft.Jet.OLEDB.4.0; Sumber Data=&Server.MapPath(database/yanhang.mdb)
Untuk metode koneksi database ini, tambahkan pernyataan:
conn.eksekusi masukkan ke dndj(bh,bm,xm,xsq) value('&bh&','&bm&','&xm&','&xsq&') '(penulisan yang benar)
set rs=server.createobject(adodb.recordset) '(salah penulisan)
sql=masukkan ke nilai dndj(bh,bm,xm,xsq)('bh','bm','xm','xsq')
rs.open sql,sambungan,1,3
3. Penerapan tanda kutip ganda
Biasanya kita menulis super link seperti ini <a href=abc.asp?id=<%=rs(id)%>>super link</a>
Namun bagaimana jika hyperlink ini dikompilasi menjadi asp?
respon.write <a href=abc.asp?id=&rs(id)&>Koneksi Super</a> '(penulisan yang benar)
respon.write <a href='abc.asp?id=&rs(id)&'>Koneksi Super</a> '(penulisan yang benar)
respon.write <a href=abc.asp?id=&rs(id)&>Koneksi Super</a> '(penulisan yang benar)
respon.write <a href=abc.asp?id=<%=rs(id)%>>Koneksi super</a> '(salah penulisan)
respon.write <a href=abc.asp?id=&rs(id)&>Koneksi Super</a> '(salah penulisan)
Formulir dikompilasi menjadi asp <input type=text name=id value=<%rs(id)%> />
respon.write <input type=text name=id value=&rs(id)& /> '(penulisan yang benar) Catatan: Ada tiga tanda kutip ganda di sini
respon.tulis <input type='text' name='id' value='&rs(id)&' /> '(penulisan yang benar)
respon.tulis <input type=text name=id value=&rs(id)& /> '(penulisan yang benar)
respon.tulis <input type=nama teks=id value=<%=rs(id)%> /> '(salah penulisan)
respon.tulis <input type=text name=id value=&rs(id)& /> '(salah penulisan)
Aturan dasar pemrograman asp untuk pemula
4. Beberapa metode untuk mencegah pengunduhan database ACCESS
Banyak situs dinamis yang menggunakan database secara ekstensif, dan database secara alami menjadi file inti sebuah situs. Setelah database diunduh secara ilegal, kemungkinan besar orang jahat akan menghancurkan situs web tersebut. Atau mencuri informasi.
Metode yang disediakan di bawah ini berlaku untuk pengguna yang menggunakan ruang host virtual dan pengguna dengan hak kontrol IIS!
1: Membeli ruang host virtual cocok untuk mereka yang tidak memiliki kendali IIS
1: Gunakan imajinasi Anda untuk mengubah nama file database
Ini yang paling mendasar. Saya rasa saat ini tidak banyak orang yang terlalu malas untuk mengganti nama file databasenya bukan? Adapun apa yang harus diubah, terserah Anda. Setidaknya pastikan nama file rumit dan tidak dapat ditebak. Tentu saja, saat ini, direktori tempat database Anda berada tidak dapat memiliki izin penjelajahan direktori!
2: Ubah akhiran nama database menjadi ASA, ASP, dll.
Saya mendengar bahwa ini sangat populer, tetapi saya telah mengujinya berkali-kali dan menemukan bahwa ini tidak ideal. Jika Anda benar-benar ingin mencegah pengunduhan, Anda perlu menambahkan beberapa bidang biner dan pengaturan lainnya rumit (jika database Anda memiliki banyak Jika demikian, metode ini sebenarnya tidak terlalu bagus)
3: Tambahkan # sebelum nama database
Cukup tambahkan # ke nama depan file database, lalu ubah alamat database di file koneksi database (seperti conn.asp). Prinsipnya saat mendownload, hanya bagian sebelum tanda # yang dapat dikenali, dan bagian berikut akan otomatis terhapus .mdb (dengan asumsi itu ada). Baik itu IE atau FLASHGET, dll, yang Anda dapatkan adalah http://bbs.bccn.net/date/index.htm
Selain itu, mempertahankan beberapa spasi dalam nama file database juga memainkan peran serupa. Karena kekhasan protokol HTTP untuk resolusi alamat, spasi akan dikodekan sebagai %20, seperti http://bbs.bccn.net/date /123 456.mdb
Saat mengunduh, http://bbs.bccn.net/date/123%20456.mdb. Direktori kami tidak memiliki file 123%20456.mdb sama sekali, jadi pengunduhan tidak valid. Meskipun Anda mengekspos alamat database, orang lain biasanya tidak dapat mengunduhnya. Yang terbaik adalah menggunakan #+spasi di kedua metode, seperti http : //bbs.bccn.net/date/#123 456.mdb
4: Enkripsi basis data
Setelah menggunakan ACCESS untuk membuka database Anda dalam mode eksklusif, buka Alat-Keamanan-Atur kata sandi database, dan ubah halaman koneksi database setelah enkripsi, seperti:
conn.open driver={microsoft access driver (*.mdb)};uid=admin;pwd=kata sandi basis data;dbq=jalur basis data
Setelah modifikasi ini, meskipun database sudah diunduh, orang lain tidak dapat membukanya (asalkan kata sandi di halaman koneksi database Anda belum bocor)
Namun perlu dicatat bahwa karena mekanisme enkripsi database Access relatif sederhana, meskipun kata sandi telah ditetapkan, dekripsi menjadi mudah. Sistem database membentuk string terenkripsi dengan meng-XOR kata sandi yang dimasukkan oleh pengguna dengan kunci tetap, dan menyimpannya di area file *.mdb mulai dari alamat &H42. Jadi seorang programmer yang baik dapat dengan mudah membuat program kecil dengan puluhan baris untuk dengan mudah mendapatkan kata sandi dari database Access apa pun. Oleh karena itu, selama database diunduh, keamanannya masih belum diketahui.
Kedua: Memiliki kontrol host (tentu saja pengaturan ruang virtual masih dapat digunakan di sini)
5: Basis data ditempatkan di luar direktori WEB
Jika direktori WEB Anda adalah e:/webroot, Anda dapat meletakkan database di folder e:/data dan membuka halaman koneksi database di e:/webroot.
Ubah alamat koneksi database menjadi form: ../data/#123 456.mdb, sehingga database dapat dipanggil secara normal, tetapi tidak dapat diunduh karena tidak ada di direktori WEB! Cara ini umumnya cocok untuk pengguna yang membeli ruang virtual.
6: Gunakan sumber data ODBC.
Dalam pemrograman seperti ASP, jika memungkinkan, sebaiknya coba gunakan sumber data ODBC dan jangan menulis nama database di program tersebut. Jika tidak, nama database akan hilang seiring dengan kerahasiaan kode sumber ASP.
Misalnya:
conn.open driver={Microsoft Access Driver (*.mdb)};dbq=&Server.MapPath(../123/abc/asfadf.mdb)
Terlihat bahwa betapapun anehnya nama database, tidak peduli seberapa dalam direktori tersembunyinya, setelah kode sumber ASP disusupi, ia dapat dengan mudah diunduh.
Jika Anda menggunakan sumber data ODBC, tidak akan ada masalah seperti itu: conn.open nama ODBC-DSN, tapi ini lebih mengganggu Jika direktori dipindahkan, sumber data harus direset!
7: Tambahkan pemetaan nama database yang diperluas seperti MDB
Metode ini dicapai dengan mengubah pengaturan IIS. Cocok untuk teman yang memiliki kontrol IIS, namun tidak cocok untuk pengguna yang membeli host virtual (kecuali administrator telah mengaturnya). Menurut saya cara ini adalah yang terbaik saat ini. Hanya dengan satu perubahan, seluruh database situs dapat dicegah agar tidak diunduh. Pengunduhan dapat dicegah meskipun alamat target terekspos tanpa mengubah kode.
mendirikan:
Tambahkan penguraian aplikasi file .mdb di Properti IIS---Direktori Rumah---Konfigurasi---Pemetaan---Ekstensi Aplikasi. Perhatikan bahwa DLL (atau EXE, dll) yang dipilih di sini sepertinya tidak sembarangan. Jika pilihannya tidak sesuai, file MDB masih dapat diunduh. Perhatikan bahwa sebaiknya jangan memilih asp.dll, dll. Anda dapat mengujinya sendiri
Setelah modifikasi ini, download databasenya seperti: http://bbs.bccn.net/data/dvbbs6.mdb. Akan muncul (kesalahan seperti 404 atau 500)
8: Keuntungan menggunakan .net
Mu Niao dari Dongwang telah menulis alat anti-hotlink WBAL untuk mencegah pengunduhan file secara ilegal. Saya ingat seorang pakar di forum ini pernah menerbitkan plug-in anti-download database, yaitu .dll yang dimuat ke IIS.
Namun, itu hanya mencegah pengunduhan non-lokal dan tidak memiliki fungsi untuk benar-benar mencegah pengunduhan basis data. Namun cara ini mirip dengan cara ke 5
Anda dapat memodifikasi file .NET agar tidak dapat diunduh secara lokal!
Di antara metode ini, hanya metode ke-7 dan ke-8 yang dapat diubah secara seragam. Setelah memodifikasi konfigurasi satu kali, database seluruh situs dapat dicegah agar tidak diunduh. Beberapa metode lainnya memerlukan modifikasi masing-masing nama database dan file koneksi lebih merepotkan, tapi untuk teman virtual Host hanya bisa melakukan ini!
Faktanya, metode ke-6 seharusnya merupakan perpanjangan dari metode ke-5, yang dapat mencapai fungsi khusus. Namun, untuk host yang tidak mendukung .net atau takut dengan pengaturan yang merepotkan, lebih baik menggunakan metode ke-5 secara langsung, dan metode ke-5. Metode ke-6 digunakan secara default. Metode, Anda masih dapat mempublikasikan dengan menyalin dan menghubungkan ke forum atau buku tamu dari host yang sama, lalu klik untuk mengunduh (karena halaman referensi tersebut berasal dari host yang sama)
Masing-masing cara ini mempunyai kelebihan dan kekurangannya masing-masing, jadi harap gunakan secara selektif. Metode ini tidak sepenuhnya aman. Administrator situs web juga perlu memperhatikan keamanan beberapa sistem dan keamanan penulisan kode ASP itu sendiri, jika tidak, seseorang masih mungkin mengunduh atau memodifikasi database!