MBUSTER 적용 방법
매크로 탐지 및 차단 기능을 위한 라이브러리 적용
WAS 서버에 동작을 위한 java, js, png, jsp 파일 적용 필요
MBUSTER 연동을 위한 파일 리스트는 다음과 같습니다.
- Mbuster.QF.jsp
- Mbuster.QC.jsp
- Mbuster_T.jsp
- MBusterAPI.java
- captcha.js
- fingerPrint.js
Explorer | 구분 | File 구분 | File 설명 |
---|---|---|---|
WAS 서버 | 호출 | java | MBusterAPI.java |
WAS 서버 | 제어 | jsp | Mbuster_QC.jsp |
Mbuster_QF.jsp | |||
Mbuster_T.jsp | |||
WAS 서버 | 제어 | javascript | mbuster_meta.js |
mbuster_api.js | |||
captcha.js | |||
fingerPrint.js | |||
etc | etc | 기타파일 | MBUSTER 관련 static 파일들 |
연동 방법
- Mbuster 연동 파일들을 소스코드에 추가하여 줍니다.
- 연동을 하고자 하는 위치에
MBusterAPI.callMBusterApiReject
함수를 호출합니다. - API 통신결과(매크로 확인 결과)에 대한 제어를 구현합니다.
MBUSTER API 스크립트 삽입 및 호출 예시
- 엠버스터 관련
<script type="text/javascript" src="${pageContext.request.contextPath}/mbuster/resource/js/mbuster_meta.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/mbuster/resource/js/mbuster_api.js"></script>
- 엠버스터 WEB 연동
MBUSTER_API({
clientIP : ClientIP,
user_login_id : user_login_id
});
MBUSTER_API() 호출 시, 요청 파라미터
필수여부 | Parameter | 설명 |
---|---|---|
필수 | clientIp | 클라이언트 Ip |
user_login_id | 로그인 사용자 아이디 (없을 경우 빈 값) |
⚠️
필수 파라미터를 넘기지 않으면 API 호출이 불가능 합니다. client의 ip를 반드시 인자로 넘겨주어야 합니다.
mbuster_meta.js 파일 수정
const service_type = "http";
const macro_domain = "127.0.0.1"; // MBUSTER 호출 도메인
const macro_cookie_domain = '127.0.0.1'; // 쿠키 저장 대상 도메인 변경 (연동 대상 사이트)
const macro_port = "8180";
const g_groupName = "www.stclab.com";
const mbuster_info_url = {
T : "./mbuster/Mbuster_T.jsp", // 차단
QC : "./mbuster/Mbuster_QC.jsp" , // Captcha
QF : "./mbuster/Mbuster_QF.jsp" // FingerPrint (브라우저 챌린지)
};
const mbmhIo = true;
Parameter | 설명 | 예시 |
---|---|---|
request | 클라이언트 요청 HttpServerletRequest | HttpServerletRequest request |
response | 클라이언트 HttpServerletResponse | HttpServerletResponse response |
groupName | MBUSTER 등록 도메인 그룹명 | mbuster.io |
loginId | 로그인 사용자 아이디 (없을 경우 클라이언트 IP) | user_id |
MBUSTER API 요청
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
String groupName = "www.stclab.com";
String userId = (String) session.getAttribute("login_id");
// 1. api 호출
String result = MBusterAPI.callMBusterApiReject(request, response, groupName, userId);
// 2. api 결과 -> 제어
String tmp[] = result.split(":");
if(tmp[0].equals("E")) {
return true;
}
else if (tmp[0].equals("F")) {
return true;
} else if (tmp[0].equals("T")) {
RequestDispatcher dispatcher = request.getRequestDispatcher("/mbuster/Mbuster_T.jsp");
dispatcher.forward(request, response);
return false;
} else if (tmp[0].equals("QC")) {
request.setAttribute("clientIp", tmp[1]);
request.setAttribute("loginId", tmp[2]);
request.setAttribute("groupName", tmp[3]);
RequestDispatcher dispatcher = request.getRequestDispatcher("/mbuster/Mbuster_QC.jsp");
dispatcher.forward(request, response);
return false;
} else if (tmp[0].equals("QF")) {
request.setAttribute("clientIp", tmp[1]);
request.setAttribute("loginId", tmp[2]);
request.setAttribute("groupName", tmp[3]);
RequestDispatcher dispatcher = request.getRequestDispatcher("/mbuster/Mbuster_QF.jsp");
dispatcher.forward(request, response);
return false;
}
return true;
}
Parameter | 설명 | 예시 |
---|---|---|
service_type | api 서비스 프로토콜 ( http / https) | http |
macro_domain | 엠버스터 장비 URL (Ip 혹은 도메인) | mbuster.co.kr |
macro_cookie_domain | 쿠키 저장대상 도메인 (연동 대상 사이트 주소) | www.stclab.com (opens in a new tab) |
macro_port | 엠버스터 API 서비스 포트 (8180 default) | 8180 |
g_groupName | MBUSTER 등록 도메인 그룹명 | www.stclab.com (opens in a new tab) |
MBUSTER API 요청 시 반환 결과
Parameter : result
항목 | 결과값 |
---|---|
이용자 | "0" |
통신에러 | "E", "F" |
차단 | "T" |
CAPTCHA | "QC" |
브라우저 챌린지 | "QF" |
통신에러, 이용자인 경우 기존 페이지를 호출하고 매크로인 경우 flag에 따라 제어합니다. |