반응형
1 2 3 4 5 6 7 8 9 10 11 12 13 | @RequestMapping("/attack/encoding/method1") public String encodingMethod1(HttpServletRequest request, HttpServletResponse response) { String textData = request.getParameter("text"); System.out.println("Encoding 전 : " + textData); // URLDecoder 를 이용한 Encoding textData = URLDecoder.decode(textData); System.out.println("Encoding 후 : " + textData); return "attack/encoding/encoding"; } | cs |
Base64 인코딩을 하게 해주는 "webtoolkit.base64.js"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | @RequestMapping("/attack/encoding/method2") public ModelAndView encodingMethod2(HttpServletRequest request, HttpServletResponse response) { String textData = request.getParameter("text"); System.out.println("Decoding 전 : " + textData); // Base64Decoder를 이용한 Decoding BASE64Decoder baseDecoder = new BASE64Decoder(); try { byte[] decodeByte = baseDecoder.decodeBuffer(textData); textData = new String( decodeByte ); } catch (IOException e) { throw new RuntimeException(e.getMessage(),e); } System.out.println("Decoding 후 : " + textData); ModelAndView view = new ModelAndView(); view.setViewName("attack/encoding/encoding"); view.addObject("inputValue", request.getParameter("text")); view.addObject("result", textData); return view; } | cs |
암호화된 파일을 db에 넣을때 사용
paros의 Tools -> Encoder/Hash에서 내가 걸고싶은 해킹 코드를 적고 URLEncode를 누르면
아래와 같이 코드가 변환되어 나온다.
이것을 url에 넣어서 보내주면 된다.
<script>하고 해킹코드를 쓰는 것을 막기위해 script를 방지하기는 Script sCript sCriPt등 막을 변수가 많기때문에
<만 막도록해본다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | @RequestMapping("/attack/encoding/method3") public ModelAndView encodingMethod3(HttpServletRequest request, HttpServletResponse response) { ModelAndView view = new ModelAndView(); view.setViewName("attack/encoding/encoding"); view.addObject("inputValue2", request.getParameter("text")); String textData = request.getParameter("text"); System.out.println("Encoding 전 : " + textData); //FIXME URLEncoder를 이용한 Encoding과 HTML Encoding // URLEncoding textData = URLEncoder.encode(textData); System.out.println("URL Encoding 후 : " + textData); view.addObject("result2_1", textData); textData = request.getParameter("text"); // HTML Encoding textData = textData.replace("<", "<"); textData = textData.replace(">", ">"); textData = textData.replace("<", "<"); textData = textData.replace(">", ">"); textData = textData.replace("<", "<"); textData = textData.replace(">", ">"); textData = textData.replace("<", "<"); textData = textData.replace(">", ">"); textData = textData.replace("<", "<"); textData = textData.replace(">", ">"); textData = textData.replace("<", "<"); textData = textData.replace(">", ">"); System.out.println("HTML Encoding 후 : " + textData); view.addObject("result2_2", textData); return view; } | cs |
<로 들어오는 모든 코드를 인코딩시켜 해킹을 막는다.
jsp에
입력값 : <c:out value="${inputValue2}" /> 로 써줘도 해킹 반은 막고 들어간다.
반응형
'CS > Secure' 카테고리의 다른 글
[Clean Coding] 주의깊은 코드 SOLID (0) | 2016.04.29 |
---|---|
[Secure Coding] 비밀번호 암호화 하기 (4) | 2016.04.28 |
[Secure Coding] Paros 64비트에서 실행 (4) | 2016.04.27 |
[Secure Coding] 예시 보기 CWE CVE CWE/SANS TOP 25 (0) | 2016.04.26 |
[Secure Coding] 보안 개발 방법론 (0) | 2016.04.26 |