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 |