JAVA

Servlet 로그인 요청시 유효성 검사 간단 예제소스

정숙씨의 쏠쏠한 코딩 2021. 7. 26. 23:51
  • 해당 소스는 예제에 나와있는 참고자료임, 보안 문제가 해결되어 있지 않으니 실 사용에 사용하면안됨.
    • loginTest.html
      • <!DOCTYPE html>
        <html lang="en">
        <head>
        <meta charset="UTF-8">
        <title>로그인</title>
        </head>
        <body>
        <form name="fromLogin" method="post" action="/loginTest" enctype="UTF-8">
        아이디 : <input type="text" name="user_id"></br>
        비밀번호 : <input type="password" name="user_pass"></br>
        <input type="submit" value="로그인"> <input type="reset" value="초기화">
        </form>
        </body>
        </html>
    • LoginServelt.java
      • package sec04.ex01;

        import javax.servlet.*;
        import javax.servlet.http.*;
        import javax.servlet.annotation.*;
        import java.io.IOException;
        import java.io.PrintWriter;

        @WebServlet(value = "/loginTest")
        public class LoginTest extends HttpServlet {
        @Override
        public void init() throws ServletException {
        System.out.println("init call");
        }

        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        }

        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html; charset=utf-8");
        PrintWriter out = response.getWriter();

        String id = request.getParameter("user_id");
        String pw = request.getParameter("user_pass");

        if(id != null && (id.length() !=0)) //id가 공백이며 id의 배열이 0이 아닐경우
        {
        out.print("<html>");
        out.print("<body>");
        out.print(id+"님 안녕하세요 </br>"); // 정상적인 로그인 Servlet 전송
        out.print("</body>");
        out.print("</html>");
        }
        else
        {
        out.print("<html>");
        out.print("<body>");
        out.print("정상적인 접근이 아닙니다. </br>"); // 조건이 맞지 않을경우 정상적인 접근이 아니라는 경고창 표시
        out.print("<a href='http://localhost:8080/test01/login.html'>로그인 창으로 이동</a>"); // 로그인 메인화면으로 이동
        out.print("</body>");
        out.print("</html>");
        }

        }
        }
    • 유효성 검사 예시를 응용하여 Servlet 관리자 페이지 우회 접속 로직
      • package sec04.ex01;

        import javax.servlet.*;
        import javax.servlet.http.*;
        import javax.servlet.annotation.*;
        import java.io.IOException;
        import java.io.PrintWriter;

        @WebServlet(value = "/loginTest2")
        public class LoginTest2 extends HttpServlet {
        @Override
        public void init() throws ServletException {
        System.out.println("init call");
        }

        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        }

        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html; charset=utf-8");

        PrintWriter out = response.getWriter();
        String user_id = request.getParameter("user_id");
        String user_pw = request.getParameter("user_pw");

        if(user_id != null && (user_id.length() != 0))
        {
        if(user_id.equals("admin"))
        {
        out.print("<html>");
        out.print("<body>");
        out.print("<font size = '12'> 관리자로 로그인 하셨습니다.");
        out.print("<input type ='button' value ='회원 정보 수정하기'>");
        out.print("<input type ='button' value ='회원 정보 삭제하기'>");
        out.print("</body>");
        out.print("</html>");

        }
        else
        {
        out.print("<html>");
        out.print("<body>");
        out.print(user_id + " 님 어서오세요.");
        out.print("</body>");
        out.print("</html>");
        }
        }
        else
        {
        out.print("<html>");
        out.print("<body>");
        out.print("아이디 및 비밀번호를 확인하세요.");
        out.print("<a href ='http://localhost:8080/test01/login.html'>로그인 창으로 이동</a>");
        out.print("</body>");
        out.print("</html>");
        }
        }

        @Override
        public void destroy() {
        System.out.println("destroy call");
        }
        }