自動ログイン--Cookie


自動ログイン–Cookie
  • 自動登録Cookie
  • Cookie
  • 特徴
  • 作用
  • 制限
  • 使用方法
  • 準備
  • クッキー
  • を追加
  • cookie
  • を取得
  • クッキーを削除
  • もう2つ

  • Cookie
    CookieはサーブレットAPIによって提供されるクラスであり、Webサーバがクライアントに送信する小さな情報である.クライアントはリクエスト時に、情報を読み出してサーバ側に送信することができ、Cookieには複数の名前/値ペアが含まれており、サーバがCookieを送信すると、クライアントはこのCookieを受け入れて保存することができる.サーバはCookieの名前、値、生存時間、バージョンを設定できます.
    特長
    HTTPは無状態であり,1つのブラウザに対して複数回要求されるため,Webサーバは区別できないため,追加のデータのメンテナンスが必要である.Cookieはクライアントが状態を保つソリューションであり、Cookieはサーバがクライアントに送信する特殊な情報であり、これらの情報はテキストの形でクライアントに格納され、クライアントがサーバに要求するたびに、これらの特殊な情報が持ち込まれる.
    Cookieに対するソリューションの1つは、サーバを介してステータスを維持するSessionです.
    さぎょう
    Cookieはテキストの一部なので、文字列しか保存できません.また、ブラウザにはサイズ制限があり、リクエストごとにサーバに送信されるので、あまり大きくないことを保証する必要があります.Cookieのコンテンツも明示的に保存されており、一部のブラウザではインタフェースの修正が提供されているため、重要なコンテンツやプライバシーにかかわるコンテンツを保存するのに適していません.
    制限
    ほとんどのブラウザでは、最大4096バイトのCookieがサポートされています.これによりCookieのサイズが制限されるので、Cookieで少量のデータを格納したり、ユーザIDなどの識別子を格納したりすることが望ましい.その後、ユーザIDは、ユーザを識別し、データベースまたは他のデータソースからユーザ情報を読み出すために使用することができる.ブラウザはまた、サイトがユーザコンピュータに格納できるCookieの数を制限する.ほとんどのブラウザでは、サイトごとに20個のCookieしか保存できません.より多くのCookieを格納しようとすると、最も古いCookieは破棄されます.一部のブラウザでは、すべてのサイトから受け入れられるCookieの総数を絶対的に制限し、通常は300個です.
    使用方法
    準備作業
    public static final String SessionID = "   -" +"UserSessionID";

    クッキーを追加
          /**
           * @description   cookie
           */
           public boolean addCookie(HttpServletRequest request,HttpServletResponse response ) {
                Cookie cookie = new Cookie(SessionID, UUID.randomUUID().toString());
                 cookie.setMaxAge(60 * 60 * 24 * 7);// cookie    
                 cookie.setPath("/" );//   cook       ,  /user /manager
                 cookie.setHttpOnly(true);//       
                 response.addCookie(cookie );//  
                 try {
                       return !("" .equals(getCookie(request)));
                } catch (Exception e ) {
                       e.printStackTrace();
                       return false ;
                }
          }

    クッキー取得
          /**
           * @param request HttpServletRequest
           * @description   cookie
           */
           public String getCookie(HttpServletRequest request)
                       throws Exception {
                Cookie[] cookies = request .getCookies();//  
                String value ="" ;
                 if (cookies != null) {
                       for (Cookie cookie : cookies) {
                             if (CookieUtils.SessionID .equals(cookie.getName())) { //  SessionID
                                   value = cookie .getValue();
                                   break;
                            }
                      }
                }
                 return value ;
          }

    クッキーの削除
          /**
           * @param request HttpServletRequest
           * @description   cookie
           */
           public boolean delCookie(HttpServletRequest request) {
                Cookie[] cookies = request .getCookies();//  
                 if (cookies != null) {
                       for (Cookie cookie : cookies) {
                             if (SessionID .equals(cookie.getName())) {
                                   cookie.setValue("" );
                                   cookie.setMaxAge(0);
                                   cookie.setPath("/" );
                                   break;
                            }
                      }
                }
                 try {
                       return "" .equals(getCookie(request));
                } catch (Exception e ) {
                       e.printStackTrace();
                       return false ;
                }
          }
    

    もうちょっと
    実はCookieの操作は簡単で、複雑なものは他の人にカプセル化されているからです.私がこのようにコードを書くのも使用するパッケージです.この3つのコードはあるシステムとは全く関係ありませんが、簡単に書けばいいわけではありません.その中には私の考えが含まれています.以下、私の考えを列挙します.
  • 他のコードのように、クッキーにユーザーアカウントとパスワードを挿入するのは率直に言って、クッキーにユーザーのアカウントパスワードを挿入するのは、まるで馬鹿なやり方です.もしある日、ユーザーのパソコンが落ちたら、パスワードが漏れたのではないでしょうか.
  • Http-Only Http-Only主に攻撃者がJSを使ってクッキーやsessionハイジャックを獲得することを防止しています.もしこの時、あなたのクッキーには多くの敏感な情報があれば、彼にとってそれは本当においしいクッキー(デザート)です.
  • 悪者がお客様のクッキーを長期ログインのバックドアとして使用することを防止するために、クッキーはログインするたびに更新すべきだと思います.もちろん、ユーザーがパスワードを変更するたびに、新しいクッキーを生成してデータベースに格納するように設定することもできます.
  • クッキー値が格納されている場所データベースはいい場所だと思いますが、どう思いますか.

  • 本人の技術は有限で、これはただ私の観点と見方で、討論を歓迎します.