Ide Dasar:
Tulis program independen untuk setiap fungsi, halaman program
Beri tahu pelanggan informasi sesedikit mungkin di sisi server Anda
Jangan gunakan ide "Pelanggan harus menulis ini" untuk memikirkan masalahnya
Pikirkan sebanyak mungkin hal yang tidak dapat terjadi
1. Kemungkinan masalah dengan halaman web dinamis interaktif
1.1 Interaksi Jenis Bentuk
1.1.1 Pengantar Konsep
Saat kami berinteraksi dengan pengunjung, bentuk yang paling umum digunakan (metode Post/Get/Put). Meskipun sangat nyaman, banyak masalah muncul karenanya.
Bendera input dalam bentuk formulir
Digunakan untuk menerima informasi yang dimasukkan oleh pengguna, seperti: nama pengguna, kata sandi, email, dll. Jika Anda tidak memeriksa input pengguna dengan baik, pengguna jahat
Akan memblokir beberapa mesin pengaman
untuk memotong sertifikasi keselamatan. Misalnya, memasukkan pernyataan HTML standar atau pernyataan JavaScript akan mengubah hasil output, dan memasukkan pernyataan HTML standar di kotak input akan
Hasil macam apa yang akan diperoleh? Misalnya, dalam buku pesan, kami memasukkan konten pesan kami: <fontSize = 10> halo! </font> Jika tidak ada layar di program Anda
Blokir pernyataan HTML, maka font "halo" akan diubah
ukuran. Mengubah ukuran font dan stiker dalam buku pesan kadang -kadang bukan hal yang buruk, tetapi dapat membuat buku pesan jelas. Tetapi jika Anda menulisnya di kotak input
Loop mati Javascript, seperti:
<aherf = "http: // someUrl" onmouseover = "while (1) {window.close ('/')}"> Ribuan pertama mendebarkan </a> Kemudian periksa pesan untuk orang lain.
Pindahkan saja para tamu
Jika Anda memindahkan mouse ke "seribu yang mendebarkan", browser pengguna akan mati karena loop mati.
1.1.2 Poin utama pencegahan
(1) Filter Karakter Khusus
([/&;/`'/// |"*? ~ <>^/(/)/[/]/{/}/$/n/r]) /// $ 1/g;), ini adalah yang paling mendasar, dan telah disebutkan lebih dari sekali di banyak tempat.
<scriptLanguage = "vbscript">
Subbubotton_onclick
erm1.uusername.value = "" Lalu
msgbox "Nama Anda tidak bisa kosong!", 0+32, "Oh! Belum mungkin"
Form1.uusername.focus
EXITSUB
endif
efform1.upassword.value = "" Lalu
msgbox "Kata sandi Anda tidak bisa kosong!", 0+32, "Oh! Belum mungkin"
Form1.upassword.focus
EXITSUB
endif
erm1.uusername.value = "" Lalu
msgbox "Nama Anda tidak bisa kosong!", 0+32, "Oh! Belum mungkin"
Form1.uusername.focus
EXITSUB
endif
Form1.Submit
endsub
</script>
functionisempty (objname)
{
varstr = document.inputform [objName] .value
vartMPSTR = str.replace ([/&;/`'/// |"*? ~ <>/(/)/[/]/{/}/$/n/r]) /// $ 1/g;, "")
vartMPSTR = tmpstr.replace ([/&;/`'/// |"*? ~ <>^/(/)/[/]/{/}/$/n/r]) /// $ 1/g;, "")
return (tmpstr.length == 0)
}
functionCheck ()
{
tf = document.inputform
kesalahan = ""
if (isEmpty ("username")) kesalahan+= "nama pengguna tidak bisa kosong./n";
if (isEmpty ("password")) kesalahan+= "Kata sandi tidak bisa kosong!/n"
if (kesalahan! = "")
peringatan (kesalahan);
return (kesalahan == "")