Beberapa hari yang lalu, situs web perusahaan berisi sistem layanan pelanggan. Karena situs web adalah ruang sewaan, tidak cukup untuk menyimpan sistem pelanggan, jadi kami menyiapkan server lain untuk menyatukan nama domain (nama domain dari server lain sama dengan yang asli) Nama domainnya terlalu berbeda), jadi saya menyertakan sistem pelanggan ini di situs web asli menggunakan kerangka kerja, tetapi mengalami beberapa masalah. Karena operasi lintas domain, masalah hilangnya sesi terjadi setelah pengguna sistem pelanggan masuk, yang mengganggu saya sepanjang hari. Saya juga memposting di sini untuk meminta solusi. net/dispbbs.asp ?boardID=10&ID=167628&halaman=3. Setelah mencari informasi dengan berbagai cara, saya akhirnya memecahkan masalah ini melalui analisis dan eksperimen saya sendiri. Hari ini saya melihat seseorang meminta sebuah program, jadi saya menulis postingan ini untuk dibagikan kepada semua orang.
Pertama jelaskan prinsipnya:
Sistem mengenali cakupan setiap program. Secara umum, IE default ke cakupan program.
Karena kerangka kerja memiliki konten lintas-domain, kerangka tersebut terlebih dahulu ditetapkan secara default ke cakupan program dari program kerangka itu sendiri, sehingga cakupan program dalam kerangka tersebut tidak dapat dikonfirmasi.
Untuk menjadikan IE ini default pada cakupan program dalam bingkai, saya menggunakan beberapa lompatan.
Pertama, keluar dari frame ini dan masuk ke halaman website tanpa bingkai yang memerlukan nilai sesi (sebut saja halaman server B), dan buat sesi di halaman ini sehingga sistem dapat secara otomatis menghasilkan sessionID, lalu lompat kembali ke halaman yang dibingkai. Karena sistem telah menghasilkan ID sesi untuk IE ini, selama IE ini tidak ditutup, sistem selalu berpikir bahwa IE ini berada dalam cakupan program ini dapat bertahan di ID ini.
Ini mencapai tujuan menipu sistem.
Satu hal lagi yang perlu ditambahkan, lompatan kedua menggunakan metode yang berbeda. Alasannya adalah saya perlu membuang informasi di luar bingkai dan menyimpan informasi di dalam bingkai.
Metode lompatan yang berbeda akan membuang atau menyimpan informasi sebelum lompatan.
Implementasi program:
Berkas 1:
File kerangka: index.htm (berjalan di server A)
<html>
<kepala>
<meta HTTP-EQUIV=Jenis Konten CONTENT=teks/html; charset=gb2312>
<title>Industri Pintu Qihao</title>
</kepala>
<baris frameset=1,* perbatasan=0 frameborder=0>
<nama bingkai=winBackLoad bergulir=tidak ada ukuran target=mainweb1 src=default_top.htm>
<nama bingkai=mainweb1 src=http://www.serverB.com/index.asp scrolling=auto>
<tanpa bingkai>
<tubuh>
<p>Laman ini menggunakan bingkai, namun browser Anda tidak mendukungnya. </p>
</tubuh>
</noframe>
</bingkai>
</html>
File 2: index.asp (berjalan di server B, berfungsi untuk melompat dan menghasilkan sessionID)
<skrip>
if (lokasi teratas!== lokasi mandiri) {
top.location=diri.lokasi;
}
//Tujuan JS ini adalah untuk berjalan di luar frame
</skrip>
<%
jika sesi(xm2)= maka
sesi(xm2)=eee
'Tujuan dari kalimat di atas hanyalah untuk menggunakan sesi, membiarkan sistem menghasilkan ID sesi untuk IE ini, dan menentukan apakah sesi tersebut telah dilompati untuk menghindari terjadinya loop tak terbatas.
%>
<META HTTP-EQUIV=SEGARKAN KONTEN=0;URL='http://www.serverA.com/index.htm'>
<%
, kalimat di atas adalah untuk kembali ke frame, catatan: gunakan saja cara lompat di atas, jangan gunakan cara lompat berikut.
kalau tidak
Respon.Redirect indeks2.asp
'Kalimat di atas adalah lompatan nyata untuk menjalankan program di server B! Catatan: Anda hanya bisa melompat dengan cara ini!
berakhir jika%>
Setelah lompatan di atas, IE ini sudah memiliki ID sesi di server B. Dengan kata lain, meskipun frame berjalan pada frame utama di server A, dapat memastikan bahwa sesi di server B tidak hilang, sehingga mencapai lintas domain. operasi.