오늘 우리는 Java Anti-Deft 링크에 대해 이야기 할 것입니다. 그것에 대해 더 많이 이야기하는 것은 쓸모가 없으며, 우리는 신청 사례를 직접 사용할 것입니다.
여기에 사용 된 도구는 의사 결정 시스템 (웹 프론트 엔드 디스플레이 시스템, 주로 권한 제어에 사용됨)이 장착되어 있으며 Java Anti-Deft 링크를 사용하여 페이지 권한을 달성 할 수있는 보고서 소프트웨어 Finereport입니다.
브라우저에서 보고서 URL을 직접 입력하면 헤더 파일이 비어 있습니다. 따라서 액세스 할 때 두 가지 판단을 할 수 있습니다. 헤더 파일이 비어 있는지 여부와 점프 할 페이지가 일치하지 않으면 오류 페이지로 이동하십시오.
참조 자가란 무엇입니까?
여기의 참조자는 HTTP 소스 주소 (HTTP 소스 주소)라고도 알려진 HTTP 헤더의 필드를 말하며 현재 웹 페이지에 링크 할 위치를 나타내는 데 사용되며 형식은 URL입니다. 다시 말해, HTTP 참조 헤더 웹 페이지는 방문자가 어디에서 왔는지 확인할 수 있으며, 이는 종종 가짜 크로스 사이트 요청을 처리하는 데 사용됩니다.
빈 참조자는 무엇이며 빈 참조자가 언제 나타날까요?
먼저, 빈 참조자를 참조 헤더의 내용으로 정의하거나 http 요청에는 참조 헤더가 전혀 포함되어 있지 않습니다.
그렇다면 HTTP 요청은 언제 참조 필드를 포함하지 않습니까? 참조 자의 정의에 따르면, 그 기능은 요청이 연결된 위치를 나타내는 것입니다. 링크 연락처에 의해 요청이 생성되지 않으면 자연스럽게 요청의 링크 소스를 지정할 필요가 없습니다.
예를 들어, 브라우저 주소 표시 줄에 리소스의 URL 주소를 직접 입력하면이 요청에는 "얇은 공기에서 생성 된"HTTP 요청이기 때문에 한 곳에서 연결되지 않기 때문에이 요청에는 참조 필드가 포함되지 않습니다.
도난 방지 체인 설정에서 빈 상자를 허용하는 것과 빈 상자를 허용하지 않는 것의 차이점은 무엇입니까?
도난 방지 체인에서 빈 상자가 허용되는 경우 브라우저 주소 표시 줄을 통해 리소스 URL에 직접 액세스 할 수 있습니다.
그러나 빈 상자가 허용되지 않으면 브라우저를 통한 직접 액세스도 금지됩니다.
작동 단계
1. 클래스 파일을 추가하십시오
헤더 파일이 비어 있는지 확인하기 위해 클래스 파일을 작성하고 코드는 다음과 같습니다.
패키지 com.fr.test; import java.io.ioexception; import java.io.printwriter; import javax.servlet.filter; import javax.servlet.filterchain; import javax.servlet.filterconfig; import javax.servlet.servletexception; import javax.servlet.servlet.servletrequest import javax.servlet.servletresponse; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import javax.servlet.http.httpsestions; public void destroves () {// a auto-grended method () {// to grecated void destroves. Dofilter (ServletRequest 요청, ServletRepronse Response, FilterChain 체인) IoException, ServleTexception {HttpservletRequest req = (httpservletRequest) 요청; httpservletresponse resp = (httpservletresponse) 응답; 문자열 참조 = req.getheader ( "Cereper"); // 아래의 IP 주소는 (null! = referenter && (referer.trim (). startswith ( "http : // localhost : 8033") || referenter.trim (). startSwith ( "http://ww.finereporthelp.com/test/hello.html")))))))) "+참조); Chain.dofilter (Req, resp); // 다음은 페이지 요청이 정상이 아닐 때 점프하는 것입니다.} else {System.out.println ( "체인 스틸"+참조); req.getRequestDispatcher ( "/ldaplogin.jsp"). Forward (req, resp); }} public void init (FilterConfig arg0) servletexception {// todo 자동 생성 메소드 스텁}}}}dodo.java를 클래스 파일로 컴파일하고 %tomcat_home %/webreport/web-inf/classe/com/fr/test 디렉토리에 배치하십시오.
2. Web.xml 파일을 수정하십시오
%tomcat_home %/webapps/webReport/web-inf에서 web.xml 파일을 열고 필터 필터를 구성하고 보고서 서버가 나타날 때 필터링을 실행하십시오. 코드는 다음과 같습니다.
<filter> <filter-name> authfilter </filter-name> <filter-class> com.fr.test.dodo </filter-class> </filter> <filter-mapping> <filter-name> authfilter </filter-name> <url-pattern>/reportserver </url-pattern> </filter-mapping>
두 단계로 수행 할 수 있습니다. 도난당한 링크 인 경우 위에서 언급 한 Ldaplogin 오류 페이지로 이동합니다. 여기에는 ldaploign 페이지가 없으므로 404로 직접 이동합니다. 데이터 권한을 구현하려면 단일 사인온 또는 세션 주입을 사용할 수 있습니다.
효율성 테스트
두 개의 HTML 파일을 준비하십시오
hello.html이 올바른 URL이라고 가정합니다
<html> <body> <p> test </p> <a href = "http : // localhost : 8033/webreport/reportserver? reportlet = demo%2fnewchart%2fothers%2fflogarithmic_axis.cpt & op = 쓰기"> anti-theft chain test </a> <html>
steel.html이 링크를 훔치기위한 URL이라고 가정하십시오
<html> <body> <p> 테스트, 잘못된 링크 주소 </p> <a href = "http : // localhost : 8033/webreport/reportserver? reportlet = demo%2fnewchart%2fothers%2fothers%2fflogarithmic_axis.cpt & op = 쓰기"> anti-thint test </html> </html>
상황 1
hello.html을 통과하는 점프, 점프 링크가 정확합니다.
상황 2
Stiel.html, 점프 링크가 잘못되었습니다. 즉, 참조자가 비어 있지 않고 오류
상황 3
URL 주소에 직접 액세스 할 수 있습니다. 즉, 참조는 비어 있습니다.
보고서에서 Java Anti-Deft Chain의 적용의 위의 예는 내가 공유하는 모든 내용입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.