현재 위치: > 최신 기사 목록> PHP SSO 단일 사인 온 보안 분석 및 취약성 방지 기술

PHP SSO 단일 사인 온 보안 분석 및 취약성 방지 기술

M66 2025-07-14

소개하다

인터넷이 개발되면서 점점 더 많은 웹 사이트가 사용자 신원 확인 기능을 채택했습니다. 그러나 다른 웹 사이트에 로그인 할 때마다 계정과 비밀번호를 입력해야합니다.이 웹 사이트는 불편할뿐만 아니라 잊기 쉽습니다. 이 문제를 해결하기 위해 SSO (Single Sign-on)가 시작되었습니다. SSO는 사용자가 여러 웹 사이트간에 원활한 인증을 달성 할 수있는 기술이며 사용자는 로그인 한 번만 여러 사이트에 액세스 할 수 있습니다.

PHP SSO의 원칙

PHP SSO의 핵심 원칙은 사용자의 첫 번째 로그인이 성공한 후 토큰 (토큰)을 생성하고 사용자의 브라우저에 쿠키에 토큰을 저장하는 것입니다. 그 후 사용자가 다른 웹 사이트를 방문하면 웹 사이트는 SSO 서버에 요청을 보내 토큰을 확인하여 사용자의 신원을 확인합니다. 확인이 성공하면 SSO 서버는 사이트의 토큰을 발행하여 완벽하게 액세스 할 수 있습니다.

PHP SSO의 보안

PHP SSO를 구현할 때 보안이 핵심 요소입니다. 몇 가지 안전 조치는 다음과 같습니다.

토큰 생성 프로세스

토큰을 생성 할 때는 토큰의 독창성을 보장하기 위해 강력한 무작위 숫자 생성 기능을 사용해야합니다. OpenSSL_RANDOM_PSEUDO_BYTES () 함수를 사용하여 안전한 랜덤 번호를 생성하고 Base64 인코딩을 통해 문자열로 변환하는 것이 좋습니다.

토큰 저장 및 전송

토큰은 암호화되어야하며 HTTPS 및 기타 보안 프로토콜을 사용하여 전송해야합니다. 토큰이 브라우저 쿠키에 저장되면, 악의적 인 스크립트에 의해 토큰이 검색되는 것을 방지하기 위해 Httponly 및 Secure 속성을 설정해야합니다.

토큰 만료 및 갱신

토큰의 보안을 향상시키기 위해서는 토큰의 만료 시간이 만료 될 때 시간이 지남에 따라 파괴되어야합니다. 동시에, 만료에 가까울 때 토큰을 자동으로 새로 고칠 수 있도록 토큰 갱신 메커니즘을 구현하는 것이 좋습니다.

PHP SSO 취약성 방지

SSO는 사용자 경험을 향상시킬 수 있지만 몇 가지 안전 위험이 있습니다. 몇 가지 일반적인 취약점 및 예방 방법은 다음과 같습니다.

CSRF (크로스 사이트 요청 위조) 취약성 방지

사용자가 로그인하면 시스템은 임의의 CSRF 토큰을 생성하여 세션에 저장해야합니다. 후속 요청 에서이 토큰은 요청의 정당성을 확인하기 위해 사용자 요청의 토큰과 비교해야합니다.

 session_start();

function generateCSRFToken() {
  $token = bin2hex(openssl_random_pseudo_bytes(32));
  $_SESSION['csrf_token'] = $token;
  return $token;
}

function validateCSRFToken($token) {
  return isset($_SESSION['csrf_token']) && $_SESSION['csrf_token'] === $token;
}

XSS (크로스 사이트 스크립팅 공격) 취약성 방지

악성 스크립트 주입을 방지하기 위해 시스템은 토큰을 HTML 페이지에 출력 할 때 HTML 탈출을 수행해야합니다. HTMLSpecialchars () 함수를 사용하여 XSS 공격을 방지하기 위해 토큰을 탈출하는 것이 좋습니다.

 $token = generateCSRFToken();

echo htmlspecialchars($token, ENT_QUOTES, 'UTF-8');

세션 납치 및 위조 토큰 취약성 방지

토큰 자체 외에 토큰을 확인할 때 요청 된 IP 주소 및 사용자 에이전트 정보를 확인하여 합법적 인 사용자가 요청을 시작했는지 확인해야합니다.

 function validateToken($token) {
  return $token === $_SESSION['csrf_token'] &&
    $_SERVER['REMOTE_ADDR'] === $_SESSION['ip'] &&
    $_SERVER['HTTP_USER_AGENT'] === $_SESSION['user_agent'];
}

요약

사용자에게 편리한 로그인 경험을 제공하는 동안 PHP SSO 단일 로그인 기술도 많은 보안 문제에 직면 해 있습니다. 토큰 생성, 스토리지, 전송 및 만료 관리의 보안을 강화하고 CSRF, XSS 및 세션 납치와 같은 취약성을 효과적으로 방지함으로써 SSO 시스템의 보안을 보장하여보다 안전하고 안정적인 로그인 서비스를 제공 할 수 있습니다.