jiwoo 2023-08-02
이지우 - 취약점 조치(세금계산서 발행 시 본인 ID로만 등록, 본인 게시글만 수정, 환불 시 보유 금액 비교 추가)
@b36b4229cbce0f8712c863d8e5fd541e49ae3a3c
src/main/java/itn/let/cop/bbs/web/EgovBBSManageController.java
--- src/main/java/itn/let/cop/bbs/web/EgovBBSManageController.java
+++ src/main/java/itn/let/cop/bbs/web/EgovBBSManageController.java
@@ -2349,6 +2349,15 @@
 		BoardVO bdVO = bbsMngService.selectBoardArticleWeb(boardVO);
 //		String frstRegisterId = bdVO.getFrstRegisterId(); // 관리자 유무
 		
+		//230801 이지우 - 본인글 외에 nttId 변조를 통하여 다른 게시글 수정 가능한 취약점 방지
+		LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
+		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getUniqId());
+		if(!bdVO.getFrstRegisterId().equals(userId)) {
+			modelAndView.addObject("message", "잘못된 접근입니다.\n관리자에게 문의하세요.");
+			modelAndView.addObject("result", "fail");
+			return modelAndView;			
+		}
+		
 		UserVO userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보
 		
 		//게시글 본인인증 번호 변수 저장
src/main/java/itn/let/mjo/pay/web/MjonPayController.java
--- src/main/java/itn/let/mjo/pay/web/MjonPayController.java
+++ src/main/java/itn/let/mjo/pay/web/MjonPayController.java
@@ -3385,6 +3385,11 @@
 			@ModelAttribute("mberManageVO") MberManageVO mberManageVO,  HttpServletRequest request,
 			ModelMap model, RedirectAttributes redirectAttributes) throws Exception{
     	
+    	//230801 이지우 추가 - 세금계산서 발행 시 아이디 변조하여 다른 계정의 세금계산서 정보 수정하는 취약점 대응 조치
+		LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
+		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getUniqId());
+		
+    	mberManageVO.setUniqId(userId);
     	mberManageService.updateTaxbill(mberManageVO);
     	
     	redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.update"));
src/main/java/itn/let/mjo/pay/web/RefundController.java
--- src/main/java/itn/let/mjo/pay/web/RefundController.java
+++ src/main/java/itn/let/mjo/pay/web/RefundController.java
@@ -321,6 +321,20 @@
 				return modelAndView;
 			}*/
 			
+			
+			//230802 이지우 취약점 조치 - 보유금액을 변조하여 환불 신청 한 경우 방지
+			//회원 정보 조회
+			RefundVO mberInfoVO = refundService.selectRefundMberInfo(refundVO);
+			
+			if(Double.parseDouble(mberInfoVO.getMberMoney()) 
+					< refundVO.getRefundMoney()) {
+				
+				modelAndView.addObject("status", "moreThanUserMoney");
+				modelAndView.addObject("msg", "현재 회원의 보유금액보다 큰 금액을 환불 할 수 없습니다.");
+				
+				return modelAndView;
+			}
+			
 			String atchFileId = "";
 			final Map<String, MultipartFile> files = multiRequest.getFileMap();
 			if (!files.isEmpty()) {
src/main/webapp/WEB-INF/jsp/web/pay/PayListRefundAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/pay/PayListRefundAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/pay/PayListRefundAjax.jsp
@@ -277,6 +277,11 @@
 		        cache: false,
 		        //timeout: 600000,
 		        success: function (returnData, status) {
+		        	//보유 금액 변조 방지
+		        	if(returnData.status == 'moreThanUserMoney'){
+		        		alert(returnData.msg)
+		        		return;
+		        	}
 		        	if(returnData.msg != null){
 		        		alert(returnData.msg);
 		        	}
Add a comment
List