0
0

Cookieについて

Posted at
  • HTTP応答にCookieを入れてウェブブラウザに伝達すれば、以後ウェブブラウザでサーバーに要請する時、該当Cookieを継続的に送ってくれる。
  • 永続的な CookieとセッションCookieがあるが、通常ブラウザ終了時にログアウトされることを期待するので、セッションCookieをお勧めする。

    永続的な Cookie : 有効期限を入力すると、その日まで保持
    セッション Cookie : 有効期限を省略するとブラウザ終了時まで保持

    @PostMapping("/login")
    public String login(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletResponse response) {
        if (bindingResult.hasErrors()) {
            return "login/loginForm";
        }
    
        Member loginMember = loginService.login(form.getLoginId(), form.getPassword());
    
        if (loginMember == null) {
            bindingResult.reject("loginFail", "IDまたはパスワードが正しくありません。");
            return "login/loginForm";
        }
    
        //ログイン成功処理	
    	Cookie idCookie = new Cookie("memberId", String.valueOf(loginMember.getId()));
    		response.addCookie(idCookie);
    
        return "redirect:/";
    }
    
    public String logout(HttpServletResponse response) {
        Cookie cookie = new Cookie("memberId", null);
        // 当該Cookieを即時終了
        cookie.setMaxAge(0);
        response.addCookie(cookie);
        return "redirect:/";
    }
    
  • 問題点
    • クライアント側でCookie値を任意変更することができる。
    • 個人情報やクレジットカード情報を入れておけば、ウェブブラウザに保管されるため、パソコンを通じて情報を盗み取ることもでき、ネットワーク要請ごとにクライアントからサーバーに伝達され続けるため、ネットワーク伝送区間から情報を盗み取ることもできる。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0