Hari ini kita akan berbicara tentang tautan anti-pencurian Java. Tidak ada gunanya membicarakannya lebih banyak tentang hal itu, dan kami akan secara langsung menggunakan kasus aplikasi.
Alat yang digunakan di sini adalah perangkat lunak pelaporan FinerEport, yang dilengkapi dengan sistem pengambilan keputusan (sistem tampilan front-end web, terutama digunakan untuk kontrol izin), dan dapat menggunakan tautan anti-pencurian Java untuk mencapai izin halaman.
Saat secara langsung memasukkan URL laporan di browser, file headernya kosong. Oleh karena itu, Anda dapat membuat dua penilaian saat mengakses: apakah file header kosong dan halaman mana yang harus dilompat, dan jika tidak cocok, lompat saja ke halaman kesalahan.
Apa itu referer?
Referensi di sini mengacu pada bidang di header HTTP, juga dikenal sebagai Alamat Sumber HTTP (referer HTTP), yang digunakan untuk menunjukkan di mana akan menautkan ke halaman web saat ini, dan formatnya adalah URL. Dengan kata lain, halaman web header referer HTTP dapat memeriksa dari mana pengunjung berasal, yang sering digunakan untuk menangani permintaan lintas situs palsu.
Apa itu referer kosong dan kapan referer kosong akan muncul?
Pertama, kami mendefinisikan referer kosong sebagai konten header referer kosong, atau permintaan HTTP tidak berisi header referer sama sekali.
Jadi kapan permintaan HTTP tidak menyertakan bidang referensi? Menurut definisi referensi, fungsinya adalah untuk menunjukkan di mana permintaan ditautkan. Ketika permintaan tidak dihasilkan oleh kontak tautan, secara alami tidak perlu menentukan sumber tautan dari permintaan tersebut.
Misalnya, jika Anda langsung memasukkan alamat URL sumber daya di bilah alamat browser, maka permintaan ini tidak akan menyertakan bidang referer, karena ini adalah permintaan HTTP "yang dihasilkan dari udara tipis" dan tidak terhubung dari satu tempat.
Dalam pengaturan rantai anti-pencurian, apa perbedaan antara memungkinkan referer kosong dan tidak mengizinkan referer kosong?
Dalam rantai anti-pencurian, jika referer kosong diizinkan, dimungkinkan untuk secara langsung mengakses URL sumber daya melalui bilah alamat browser;
Namun, jika referer kosong tidak diizinkan, akses langsung melalui browser juga dilarang.
Langkah Operasi
1. Tambahkan file kelas
Tulis file kelas untuk menentukan apakah file header kosong, kodenya adalah sebagai berikut:
Paket com.fr.test; impor java.io.ioException; impor java.io.printwriter; impor javax.servlet.filter; impor javax.servlet.filterchain; impor javax.servlet.filterconfig; impor javax.servlet.servletexception; impor; javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class Dodo implements Filter { public void destroy() { // TODO Auto-generated method stub } public void dofilter (permintaan servletRequest, respons servletResponse, rantai filterchain) melempar ioException, servletException {httpservletRequest req = (httpservletRequest) permintaan; HttpservletResponse resp = (httpservletResponse); String referer = req.getHeader ("referer"); // Alamat IP di bawah ini adalah permintaan halaman normal jika (null! = Referer && (referer.trim (). Startswith ("http: // localhost: 8033") || referer.trim (). Startswith ("http://www.finereporthelp.com/test/test/hello.htp:ht")) permintaan "+referer); rantai.dofilter (req, resp); // Berikut ini adalah untuk melompat ketika permintaan halaman tidak normal} else {System.out.println ("Chain Steal"+Referer); req.getRequestDispatcher ("/ldaplogin.jsp"). Forward (req, resp); }} public void init (filterconfig arg0) melempar ServletException {// TODO Metode yang dihasilkan secara otomatis Stub}}Kompilasi dodo.java ke dalam file kelas dan letakkan di tomcat_home %/Webreport/web-inf/class/com/fr/test direktori.
2. Ubah file web.xml
Buka file web.xml di bawah %tomcat_home %/webapps/webreport/web-inf, konfigurasikan filter filter, dan jalankan pemfilteran saat ReportServer muncul. Kodenya adalah sebagai berikut:
<nilter> <filter-name> authfilter </tiler-name> <nilter-class> com.fr.test.dodo </tiler-class> </tiler> <nilter-Mapping> <nilter-name> authfilter </filter-name> <riter-pattern>/Reportserver </rurl-pola> </filter-mapping>
Itu bisa dilakukan dalam dua langkah. Jika itu adalah tautan yang dicuri, itu akan melompat ke halaman kesalahan ldaplogin yang disebutkan di atas. Tidak ada halaman LDAPLOIGN di sini, jadi itu akan melompat langsung ke 404. Jika Anda ingin menerapkan izin data, Anda dapat menggunakan single-on atau injeksi sesi.
Tes Efektivitas
Siapkan dua file HTML
Asumsikan hello.html adalah URL yang benar
<html> <body> <p> tes </p> <a href = "http: // localhost: 8033/Webreport/Reporterver?
Asumsikan bahwa Steel.html adalah URL untuk mencuri tautan
<html> <body> <p> tes, alamat tautan yang salah </p> <a href = "http: // localhost: 8033/Webreport/ReporterServer? Reportlet = Demo%2FNEWCHART%2FOTHER%2FOTHTE 2FLOGARITHMIC_AXIS.CPT & OP = WRITE"> Anti-EREFT%2FOTHT </axis
Situasi 1
Lompat melalui hello.html, link tautannya benar, yaitu, referer tidak kosong dan benar
Situasi 2
Lompat melalui baja.html, lompat tautan salah, yaitu, referer tidak kosong dan kesalahan
Situasi ketiga
Akses Langsung ke Alamat URL, yaitu, referer kosong
Contoh di atas penerapan rantai anti-pencurian Java dalam laporan (disarankan) adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.