2012-12-20 4 views
0

나는 다음과 같은 구조를 가지고 : 누군가가 사용자 이름과 암호를 확인 login.php를 통해 로그인하고 설정하면PHP 세션 관리, 괜찮습니까?

Index.php 
Account.php 
Login.php 
CheckLogin.php 
다음 세션 변수가

$_SESSION['username'] = $username; 
$_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']); 

가 Account.php 액세스

그 HTTP_USER_AGENT를 검사하는 CheckLogin.php 파일과 username 변수가 설정되어 있는지 확인합니다.

여기 내가 문제가있는 곳입니다. 사용자가 index.php (홈 페이지)로 돌아가서 로그인 한 경우 계정 링크를 표시하고 싶습니다. 그러나 사용자가 로그인하지 않은 경우 즉, 사이트를 방문한 경우 가입 링크를 표시하고 싶습니다. 나는 다음 할 수있는 생각 :

<?php session_start() 

if (!isset($_SESSION['username'])) { 
// If username is not set destroy the session 
session_destroy(); 
echo ("<a href=\"signup.php\">Sign up</a>"); 
} 
else { 
// If username is set 
echo ("<a href=\"account.php\">Sign up</a>"); 
} 
?> 

나는 이것이 누군가가 세션을 납치 관리하고 세션 및 로그를 파괴한다 검사를 할 것 account.php 갔다 그러나 경우 완전히 안전하지 알고 그들이 합법적이지 않다면 그들 밖으로 나간다. 이 최상의 방법은이 원하는 결과를 얻는 더 좋은 방법입니다. 모든 사람들이 사이트를 방문하고 세션을 만들고 파괴하는 것을 생각하는 것은 좋지 않습니다. 해야 할 일이 옳은가요 아니면 제가 고려해야 할 다른 것이 있습니까?

+2

고급 프레임 워크의 코드를 읽고 인증 관리 방법을 확인하면 잘 작동합니다. – kapa

+1

거기에 PHP를 위해 로그인 시스템을 통해 너무 많은 생각을 가지고, 왜 이미 한 짓을 활용하지? – jtheman

+0

그냥 팁 : 에코는 기능이 아닙니다. echo ("a")가 아닌 echo "a"를 사용하십시오. 그래도 차이는 없습니다. –

답변

0

확인하기에 충분합니다. 모든 시도에서 세션을 파괴 할 필요가 없습니다. 누군가가 세션을 납치 할 수있는 경우

<?php session_start() 

if (isset($_SESSION['username'])) { 
    echo ("<a href=\"account.php\">Sign up</a>"); 
} 
else { 
    // If username is not set 
    echo ("<a href=\"signup.php\">Sign up</a>"); 
} 
?> 

, 그는 또한 account.php에 액세스 할 수 있습니다. 위에서 설명한 것처럼 인증 시스템에 대한 유용한 자습서를 읽거나 플러그인을 사용하십시오. 적절한 지식없이 인증을 구축하는 것은 약간 위험합니다.

+0

나는 사이트에 많은 방문객이 있었고 세션을 만들고 그 사람이 페이지에 액세스 할 때마다 그렇게하지 않는 것이 좋지 않을 것이라고 우려했다. 걱정하지 않아도 될까요? – user1754727

+0

많은 트래픽은 보안 문제가 아닙니다. 세션 처리기가 빌드되는 방식이 될 수 있습니다. – aebersold

+0

인증에 대한 유용한 자습서를 알고 있습니까? – user1754727

0

귀하의 확인이 세션에만 기반한 것이라면 귀하의 웹 사이트가 보안되지 않을 것입니다. 몇 가지 제안 사항이 있습니다. 1 CSRF를 사용하여 보유한 모든 게시물에 대한 보안을 강화하십시오. 2- 세션은 항상 암호화되어야하며 소금 키를 사용해야합니다. 이렇게하면 보안을 강화할 수 있습니다. 정보 세션을 위해서만 웹 사이트를 보호하는 것이 항상 최선의 방법은 아닙니다.

+0

입력 해 주셔서 감사합니다. 인증을 위해 제안하는 방법은 무엇입니까? – user1754727