วันนี้เราจะพูดคุยเกี่ยวกับลิงค์ต่อต้านการโจรกรรม Java ไม่มีประโยชน์ที่จะพูดคุยเกี่ยวกับเรื่องนี้มากขึ้นและเราจะใช้กรณีแอปพลิเคชันโดยตรง
เครื่องมือที่ใช้ในที่นี้คือซอฟต์แวร์การรายงาน Finereport ซึ่งติดตั้งระบบการตัดสินใจ (ระบบแสดงผลส่วนหน้าเว็บส่วนใหญ่ใช้สำหรับการควบคุมการอนุญาต) และสามารถใช้ลิงก์ต่อต้านการโจรกรรม Java เพื่อให้ได้สิทธิ์ในหน้าเว็บ
เมื่อป้อน URL รายงานโดยตรงในเบราว์เซอร์ไฟล์ส่วนหัวจะว่างเปล่า ดังนั้นคุณสามารถตัดสินสองครั้งเมื่อเข้าถึง: ไม่ว่าไฟล์ส่วนหัวจะว่างเปล่าและหน้าใดที่จะข้ามไปและถ้ามันไม่ตรงกันเพียงแค่ข้ามไปที่หน้าข้อผิดพลาด
ผู้อ้างอิงคืออะไร?
ผู้อ้างอิงที่นี่หมายถึงฟิลด์ในส่วนหัว HTTP หรือที่เรียกว่าที่อยู่ HTTP ต้นทาง (HTTP Referer) ซึ่งใช้เพื่อระบุตำแหน่งที่จะเชื่อมโยงไปยังเว็บเพจปัจจุบันและรูปแบบคือ URL กล่าวอีกนัยหนึ่งหน้าเว็บส่วนหัวผู้อ้างอิง HTTP สามารถตรวจสอบว่าผู้เข้าชมมาจากไหนซึ่งมักใช้เพื่อจัดการกับคำขอข้ามไซต์ปลอม
ผู้อ้างอิงที่ว่างเปล่าคืออะไรและผู้อ้างอิงที่ว่างเปล่าจะปรากฏขึ้นเมื่อใด
ก่อนอื่นเรากำหนดผู้อ้างอิงที่ว่างเปล่าเป็นเนื้อหาของส่วนหัวผู้อ้างอิงว่างเปล่าหรือคำขอ HTTP ไม่มีส่วนหัวผู้อ้างอิงเลย
ดังนั้นคำขอ HTTP จะไม่รวมฟิลด์ผู้อ้างอิงเมื่อใด ตามคำจำกัดความของผู้อ้างอิงฟังก์ชั่นของมันคือการระบุตำแหน่งที่เชื่อมโยงคำขอ เมื่อคำขอไม่ได้สร้างขึ้นโดยผู้ติดต่อลิงค์ไม่จำเป็นต้องระบุแหล่งที่มาของการร้องขอ
ตัวอย่างเช่นหากคุณป้อนที่อยู่ URL โดยตรงของทรัพยากรในแถบที่อยู่ของเบราว์เซอร์คำขอนี้จะไม่รวมฟิลด์ผู้อ้างอิงเนื่องจากนี่เป็นคำขอ HTTP "ที่สร้างขึ้นจากอากาศบาง" และไม่ได้เชื่อมโยงจากที่เดียว
ในการตั้งค่าโซ่ต่อต้านการโจรกรรมความแตกต่างระหว่างการอนุญาตให้อ้างอิงที่ว่างเปล่าและไม่อนุญาตให้ผู้อ้างอิงว่างเปล่า?
ในห่วงโซ่ต่อต้านการโจรกรรมหากได้รับอนุญาตให้อ้างอิงที่ว่างเปล่าสามารถเข้าถึง URL ทรัพยากรได้โดยตรงผ่านแถบที่อยู่เบราว์เซอร์
อย่างไรก็ตามหากไม่อนุญาตให้อ้างอิงที่ว่างเปล่าการเข้าถึงโดยตรงผ่านเบราว์เซอร์ก็ห้ามเช่นกัน
ขั้นตอนการดำเนินงาน
1. เพิ่มไฟล์คลาส
เขียนไฟล์คลาสเพื่อพิจารณาว่าไฟล์ส่วนหัวนั้นว่างเปล่ารหัสมีดังนี้:
แพ็คเกจ com.fr.test; นำเข้า java.io.ioexception; นำเข้า java.io.printwriter; นำเข้า javax.servlet.filter; นำเข้า javax.servlet.filterchain; นำเข้า javax.servlet.filterconfig; javax.servlet.servletResponse; นำเข้า javax.servlet.http.httpservletrequest; นำเข้า Javax.servlet.http.httpservletResponse; นำเข้า javax.servlet.http.httpsession; เป็นโมฆะ dofilter (คำขอ ServletRequest, การตอบสนอง servletResponse, ห่วงโซ่ FilterChain) พ่น IOException, ServleTexception {httpservletRequest req = (httpservletrequest) คำขอ; httpservletResponse resp = (httpservletResponse) การตอบสนอง; String referer = req.getheader ("referer"); // ที่อยู่ IP ด้านล่างเป็นคำขอหน้าปกติถ้า (null! = referer && (referer.trim (). startswith ("http: // localhost: 8033") || referer.trim (). startswith ("http://www.fineereporthelp.com คำขอ "+ผู้อ้างอิง); chain.dofilter (req, resp); // ต่อไปนี้คือการกระโดดเมื่อคำขอสำหรับหน้าไม่ใช่ปกติ} else {system.out.println ("chain steal"+referer); req.getRequestDispatcher ("/ldaplogin.jsp"). ไปข้างหน้า (req, resp); }} public void init (filterConfig arg0) พ่น servletexception {// todo วิธีการสร้างอัตโนมัติ stub}}}รวบรวม dodo.java ลงในไฟล์คลาสและวางไว้ใน %tomcat_home %/webreport/web-inf/classes/com/fr/ไดเรกทอรีทดสอบ
2. แก้ไขไฟล์ web.xml
เปิดไฟล์ web.xml ภายใต้ %tomcat_home %/webapps/webreport/web-inf กำหนดค่าตัวกรองตัวกรองและเรียกใช้การกรองเมื่อ Reportserver ปรากฏขึ้น รหัสมีดังนี้:
<silter> <filter-Name> AuthFilter </filter-name> <silter-class> com.fr.test.dodo </filter-class> </filter> <filter-mapping> <filter-name> authfilter </filter-name> <url-pattern>
สามารถทำได้ในสองขั้นตอน หากเป็นลิงค์ที่ถูกขโมยมันจะข้ามไปยังหน้าข้อผิดพลาด LDAPLOGIN ที่กล่าวถึงข้างต้น ไม่มีหน้า ldaploign ที่นี่ดังนั้นมันจะข้ามไปที่ 404 โดยตรงหากคุณต้องการใช้การอนุญาตข้อมูลคุณสามารถใช้การลงชื่อเข้าใช้ครั้งเดียวหรือการฉีดเซสชัน
การทดสอบประสิทธิผล
เตรียมไฟล์ HTML สองไฟล์
สมมติว่า hello.html เป็น URL ที่ถูกต้อง
<html> <body> <p> ทดสอบ </p> <a href = "http: // localhost: 8033/webreport/reportserver? regomentlet = demo%2fnewchart%2fothers%2flogarithmic_axis.cpt & op = write"
สมมติว่า steel.html เป็น URL สำหรับการขโมยลิงก์
<html> <body> <p> ทดสอบที่อยู่ลิงค์ผิด </p> <a href = "http: // localhost: 8033/webreport/reportserver? reportlet = demo%2fnewchart%2fothers%2flogarithmic_axis.cpt & op = write"
สถานการณ์ที่ 1
ข้าม Hello.html ลิงค์กระโดดถูกต้องนั่นคือผู้อ้างอิงไม่ว่างและถูกต้อง
สถานการณ์ที่ 2
ข้ามผ่าน steel.html ลิงก์กระโดดไม่ถูกต้องนั่นคือผู้อ้างอิงไม่ว่างและข้อผิดพลาด
สถานการณ์ที่สาม
การเข้าถึงที่อยู่ URL โดยตรงนั่นคือผู้อ้างอิงว่างเปล่า
ตัวอย่างข้างต้นของแอปพลิเคชันของโซ่ต่อต้านการโจรกรรม Java ในรายงาน (แนะนำ) คือเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น