본문 매개변수가 조회에서 허용됨
위험: 사용자 이름, 비밀번호, 머신 이름 및/또는 민감한 파일 위치 등과 같이 웹 애플리케이션에 대한 민감한 정보를 모으는 것이 가능합니다.
속기 쉬운 사용자를 설득해서 사용자 이름, 비밀번호, 신용카드 번호, 주민등록 번호와 같은 민감한 정보를 제공하도록 하는 것이 가능합니다.
수정사항: 조회 문자열로 전송되는 본문 매개변수를 허용하지 마십시오.
이유: 오른쪽에 있는 테스트 응답이 왼쪽의 원래 응답과 동일하며, 가상의 '방문경로' 헤더가 포함되어 있더라도 이는 CSRF(Cross-Site Request Forgery) 시도가 성공했음을 나타내므로 테스트 결과에서 취약성이 확인됩니다.
<%@page import="java.util.Locale"%>
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@page import="java.security.KeyFactory"%>
<%@page import="java.security.KeyPair"%>
<%@page import="java.security.KeyPairGenerator"%>
<%@page import="java.security.PrivateKey"%>
<%@page import="java.security.spec.RSAPublicKeySpec"%>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%
String language = Locale.getDefault().getLanguage();
if (language.equals("ko")) {
language = "KOR";
} else if (language.equals("en")) {
language = "ENG";
} else {
language = "LOC";
}
int KEY_SIZE = 1024;
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
generator.initialize(KEY_SIZE);
KeyPair keyPair = generator.genKeyPair();
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PrivateKey privateKey = keyPair.getPrivate();
// 세션에 공개키의 문자열을 키로하여 개인키를 저장한다.
session.setAttribute("__rsaPrivateKey__", privateKey);
%>
참고: http://egloos.zum.com/kwon37xi/v/4427199