Masalah keamanan ini harus dikaitkan dengan JavaScript. Umumnya, server A diatur untuk tidak mengizinkan mesin B di domain lain mengeksekusi ajax di B untuk memanggil sumber daya di server A. Berikut adalah contoh sederhana dari risiko keamanan:
Dengan asumsi bahwa ajax dapat diakses dari suatu domain, saya dapat menulis ajax di mesin saya sendiri untuk meminta sumber daya di berbagai aplikasi web Google. Misalnya, saya pertama kali menggunakan firefox untuk mempelajari alamat dan parameter dari sejumlah besar permintaan ajax oleh GMail selama proses login, dan saya bisa mendapatkan proses verifikasi cookie pengguna. Kemudian tulis js untuk mendapatkan cookie pengguna lain di seluruh domain, sehingga Anda dapat melewati kata sandi GMail pengguna dan masuk ke kotak surat GMail orang lain.
Dengan batasan lintas domain ajax, apakah benar-benar tidak mungkin melakukan ajax untuk memutus akses domain?
Memang benar ajax tidak dapat merusak domain, tetapi kita dapat mengimplementasikannya melalui relay. Prinsip proxy yang disebut sangat sederhana. Anda dapat mengatur wadah Anda sendiri antara js Anda sendiri dan sumber daya server jarak jauh A. Anda dapat menggunakan asp, php, java, .net, dll. Bahasa web dinamis yang mungkin adalah asp sebagai contoh (dapatkan daftar teman pengguna di situs web Redekuai dan kembalikan format data xml)
<%
p = " http://redekuai.com/api/user_friends_xml/funy "
Respon.BinaryWrite ZQcnGet(p)
Respon. Siram
Fungsi ZQcnGet(url)
Setel Pengambilan = CreateObject("Microsoft.XMLHTTP")
Dengan Pengambilan
.Buka "Dapatkan", url, Salah, "", ""
.Mengirim
ZQcnGet = .ResponseBody
Akhiri Dengan
Atur Pengambilan = Tidak Ada
Fungsi Akhir
%>
Simpan kode ini sebagai proxy.asp, lalu masukkan ke IIS saat ini, Anda dapat menemukan mesin untuk menulis js, dan menggunakan ajax untuk meminta proxy.asp .
Kode contoh PHP lebih sederhana
echo file_get_contents(" http://redekuai.com/api/user_friends_xml/funy "");
?>
Catatan: Versi php harus >= 4.3.0.
Berikut adalah contoh kode untuk versi asp.net (C#):
menggunakan System.Net;
menggunakan Sistem.IO;
menggunakan Sistem.Teks;
halaman ajax kelas parsial publik: System.Web.UI.Page
{
dilindungi kekosongan Page_Load (pengirim objek, EventArgs e)
{
WebRequest wr = WebRequest.Create(" http://redekuai.com/api/user_friends_xml/funy ");
WebResponse wres = wr.GetResponse();
Pengkodean resEncoding = System.Text.Encoding.GetEncoding("utf-8");
StreamReader sr = StreamReader baru(wres.GetResponseStream(), resEncoding);
string html = sr.ReadToEnd();
Respon.Tulis(html);
sr.Tutup();
wres.Tutup();
}
}
Masing-masing proxy.asp proxy.php proxy.aspx
Jadi apa pentingnya melakukan pekerjaan dengan baik sebagai proxy dan mengaktifkan akses domain js ke sumber daya situs web jarak jauh di mesin umum Anda (bukan server web)?
Tahukah Anda, teknologi Internet saat ini sudah memasuki era Mashup absolut. Ada lebih dari 2.000 perusahaan di Amerika Serikat yang mengandalkan APP Facebook untuk bertahan hidup. Anda harus tahu bahwa Internet juga akan menjadi infrastruktur China dalam 5 tahun. Sudah ada situs web2.0 yang relatif bagus yang membuka API (menembak lagi, cepat panas) atau bersiap untuk membukanya.