본문 바로가기

JSP

JSP(08.06) - set, get, sql Injection

set, get

//ArticleDetail 파일

request.setAttribute("articleRow", articleRow);
         request.getRequestDispatcher("/jsp/article/detail.jsp").forward(request, response);
//detail 파일

Map<String, Object> articleRow =(Map<String, Object>) request.getAttribute("articleRow");

ArticleDetail 파일에서 detail 파일로 parameter에서 가져오는 방식을 사용할 수 없다. request.setAttribute("articleRows", articleRows);를 하여 넘겨줄 수 있다. 여기서 attribute는 List<Map<String, Object>> articleRows = dbUtil.selectRows(conn, sql)를 사용하겠다 선언하는 것이다.

이렇게 넘겨받은 detail은 getAttribute하여 사용할 수 있다.

 

 


 

로그인 -> 아이디, 패스워드

SELECT * FROM `member` WHERE loginId = 'test1' AND loginPw = 'test1';

ID: [admin ]
PW: [' OR '1' = '1']
SELECT * FROM member WHERE loginId = 'admin' AND loginPw = '' OR '1' = '1';

=> true이므로 무조건 로그인 됨

(예전에 많이 사용했던 방식)

데이터베이스에 영향을 직접적으로 미치는 상황을 피하기 위해서 preparestatement를 사용하는 것이 옳다.

 


 

SQL Injection

  • 데이터베이스 공격 유형 중 하나
  • sql 주입은 웹 애플리케이션이 백엔드에서 구동 중인 데이터베이스에 질의를 하는 과정에 사용되는 SQL 쿼리를 조작하여 데이터베이스를 대상으로 공격자가 의도한 악의적인 행위를 할 수 있는 Injection 기반의 웹 취약점이다.

'JSP' 카테고리의 다른 글

서블릿(Servlet) - API, 생명주기  (0) 2024.08.11
JSP(08.07) - HTTP, HttpSession, Request, Response  (0) 2024.08.07
JSP(08.07) - GET, POST, TDD  (0) 2024.08.07
JSP(08.05) - 절대경로, 상대경로  (0) 2024.08.05
JSP(08.05) - Servlet, Tomcat  (0) 2024.08.05