v2
★ PART · BOARD

원시적인 회원가입/로그인

회원과 게시판 — 읽기 자료

📍 지금 어디를 만지고 있나요?
브라우저
회원과 게시판
DB

핵심 용어

v2원시적 회원가입/로그인. 학습용 의도적 위험.
평문 (Plaintext)암호화 안 된 그대로의 텍스트.

1. 문제

전 차시까지의 답답함

먼저 의도적으로 어렵게 만들어보자. 평문 저장과 세션 없는 로그인.

2. 새 도구

v2 — 위험한 첫 버전

비밀번호를 그대로 DB 에 저장. 로그인은 SELECT 비교만. 페이지 옮기면 풀림.

3. 코드

-- v2 의 테이블
CREATE TABLE mymember (
    id  VARCHAR(50)  PRIMARY KEY,
    pwd VARCHAR(20)  NOT NULL
);

// com.smhrd.domain.Member
@Data @AllArgsConstructor @NoArgsConstructor
public class Member {
    private String id;
    private String pwd;
}

// com.smhrd.service.MemberService
@Service
public class MemberService {
    @Autowired MemberMapper mapper;

    public void signup(Member m) {
        // 평문 그대로! (의도적으로 위험)
        mapper.insert(m);
    }

    public Member login(String id, String pwd) {
        Member m = mapper.selectOne(id);
        if (m != null && m.getPwd().equals(pwd)) {
            return m;
        }
        return null;
    }
}

// com.smhrd.controller.LoginController
@Controller
public class LoginController {
    @PostMapping("/login")
    public String login(@RequestParam String id,
                         @RequestParam String pwd) {
        Member m = service.login(id, pwd);
        if (m != null) return "redirect:/";
        return "redirect:/login?error";
        // 세션 저장 X — 페이지 이동 시 로그인 풀림
    }
}

4. 정리

5. Before / After

전 차시 끝

먼저 의도적으로 어렵게 만들어보자. 평문 저장과 세션 없는 로그인.

이번 차시 끝

v2 의 두 가지 문제 — 평문 / 무상태 — 를 직접 체감한다.