복붙노트

쿠키가없는 PHP 세션

PHP

쿠키가없는 PHP 세션

세션 쿠키를 배치하지 않고 PHP에서 영구 세션을 시작할 수있는 방법이 있습니까? IP 주소 기반 솔루션과 같은 다른 페이지에서 세션을 유지 관리하는 다른 방법이 있습니까?

내가 묻는 이유는 대부분의 사용자가 쿠키를 사용하고 있지만 쿠키를 사용하지 않도록 설정 한 사용자가 로그인 시스템을 사용할 수있는 방법이 있는지 알고 싶습니다. 쿠키를 사용하지 않도록 설정하는 것은 불필요한 개인 편집증 일뿐입니다.

해결법

  1. ==============================

    1.쿠키를 사용하도록 사용자에게 요청하는 것이 너무 어렵다고 생각하지 않습니다. 사람들이 완전히 꺼버렸을 때 나는 어리 석다는 것을 알았습니다.

    쿠키를 사용하도록 사용자에게 요청하는 것이 너무 어렵다고 생각하지 않습니다. 사람들이 완전히 꺼버렸을 때 나는 어리 석다는 것을 알았습니다.

    그렇지 않으면 session.use_only_cookies를 "0"으로 설정하여 세션 ID를 PHP 내의 URL에 강제로 추가 할 수 있습니다. 그러나 이러한 접근 방식에는 몇 가지 단점이 있습니다. 주로 Cookie 헤더와 대조적으로 URL 내에 상태를 유지하는 것. 사용자가 자신이 있던 페이지의 URL을 복사하여 붙여 넣고 다른 누군가가 클릭하면 동일한 세션을 사용하게됩니다.

    <?php
         ini_set("session.use_cookies", 0);
         ini_set("session.use_only_cookies", 0);
         ini_set("session.use_trans_sid", 1);
         ini_set("session.cache_limiter", "");
         session_start();
    
  2. ==============================

    2.모든 URL에 세션 ID를 추가하여 활성화하려면 session.use_trans_sid의 ini-Value를 true로 설정할 수 있습니다. 이것 좀 봐.

    모든 URL에 세션 ID를 추가하여 활성화하려면 session.use_trans_sid의 ini-Value를 true로 설정할 수 있습니다. 이것 좀 봐.

    보안을 위해 세션을 생성 한 IP로 세션을 제한해야합니다. 그러나 동일한 IP를 가진 사람 (예 : 프록시 뒤에있는 사람)이 매우 동일한 세션을 재사용 할 수 있기 때문에 완전히 안전하지는 않습니다.

  3. ==============================

    3.URL의 세션 ID로 작업하고 다음과 같이 쿠키를 비활성화 할 수 있습니다.

    URL의 세션 ID로 작업하고 다음과 같이 쿠키를 비활성화 할 수 있습니다.

    ini_set('session.use_cookies', 0);
    ini_set('session.use_only_cookies', 0);
    ini_set('session.use_trans_sid', 1);
    session_start();
    // IP check
    if($_SESSION['ip_check'] != $_SERVER['REMOTE_ADDR']){
       session_regenerate_id();
       session_destroy();
       session_start();
    }
    $_SESSION['ip_check'] = $_SERVER['REMOTE_ADDR'];
    // session stuff
    

    참고 : URL에서 세션 ID를 사용하는 것은 매우 위험합니다. 무선 카드 및 프록시 서버가 동일한 IP 주소를 사용하여 주변을 여행 할 때 IP 주소가 변경 될 수 있습니다. '이전 URL'(이전 세션 ID 포함)을 클릭하면 쉽게 손상됩니다.

    데이터베이스와 결합하여 고유 한 세션 처리 함수를 만드는 데 관심이있을 수도 있습니다. 세션 ID는 무시하고 IP 주소에 바인드합니다. (http://php.net/manual/en/function.session-set-save-handler.php의 예제 참조)

    참고 문헌 :

  4. ==============================

    4.데이터베이스의 IP 당 세션 ID를 저장할 수 있습니다.

    데이터베이스의 IP 당 세션 ID를 저장할 수 있습니다.

    session_id, ip 및 고유 한 임시 키 (기록 된 사용자의 경우) 또는 원하는 다른 조건의 세 가지 필드가있는 mysql 테이블을 만듭니다. 그런 다음 세션 쿠키 및 use_trans_sid를 해제하십시오.

    이 새로운 테이블을 기반으로 세션 동작을 관리하는 코드를 작성하십시오!

    session_start () 이후에 session_id를 테이블에 저장하고 나중에 (IP 및 기타 조건에 따라) 테이블에서 수신 한 다음

    session_id($in_table_session_id);
    

    자세한 내용과 전체 가이드는 https://gist.github.com/mimrahe/77415f4a9e238c313bbe8c42f8a6b7fe를 참조하십시오.

  5. ==============================

    5.데이터베이스 레코드 또는 임시 파일을 만들고 모든 페이지로드시 요청에 대해 $ _SERVER 변수를 확인할 수 있습니다. 보안 위험이 있습니다. 그러나 충분한 변수가 있으면 (여기에 목록을보십시오) 당신은 받아 들일 수있는 수준까지 공중 납치의 기회를 얻었다 고 느낄 것입니다; 앱이 얼마나 안전해야 하는지를 안다.

    데이터베이스 레코드 또는 임시 파일을 만들고 모든 페이지로드시 요청에 대해 $ _SERVER 변수를 확인할 수 있습니다. 보안 위험이 있습니다. 그러나 충분한 변수가 있으면 (여기에 목록을보십시오) 당신은 받아 들일 수있는 수준까지 공중 납치의 기회를 얻었다 고 느낄 것입니다; 앱이 얼마나 안전해야 하는지를 안다.

  6. ==============================

    6.이 작업을 원한다면 HTML 코드에 세션 ID를 주석 태그로 추가하고 PHP 코드를 사용하여 HTML 코드에 포함 된 해당 세션 ID를 사용하도록 구성합니다. 사용자 IP를 사용하거나 URL에 세션 ID를 추가하는 대신 URL을 추가하는 것이 더 적절하다고 생각합니다.

    이 작업을 원한다면 HTML 코드에 세션 ID를 주석 태그로 추가하고 PHP 코드를 사용하여 HTML 코드에 포함 된 해당 세션 ID를 사용하도록 구성합니다. 사용자 IP를 사용하거나 URL에 세션 ID를 추가하는 대신 URL을 추가하는 것이 더 적절하다고 생각합니다.

  7. from https://stackoverflow.com/questions/3740845/php-session-without-cookies by cc-by-sa and MIT license