로그인이라던지, 회원가입이라던지 토큰이 필요한 부분이 매우 많습니다.
여기서 할 토큰은 시간제한 토큰입니다.
시간제한 토큰이 뭐냐면
시간이 지나면 토큰값이 만료되서 토큰을 새로 발급받는걸 생각하시면되요. 그런데, 세션을 삭제하면 로그인이나 가입이 안되게 꼼수를 써야합니다.
먼저 페이지 제작을해줍시다..!
페이지 이름은 정해진대로해주세요.
다음 페이지 이름은 login.php로 칭합니다.
외부 접근을 차단하기 위해 여러가지 세션을 추가합니다.
<?SESSION_START():?>
<?php
$_SESSION[token]=date("YmdHis"); //은근슬쩍 토큰생성 (아무에게도 안보여요. 단지 PHPSSID가 보일 뿐이지)
$_SESSION[tokensave]=$_SESSION[token]; //토큰을 다른 세션에 저장
$rand_token=mt_rand(1,9999);
$_SESSION[fake]=$rand_token;//봇 테러 방지를 위한 꼼수
$faketoken=$_SESSION[tokensave]-$_SESSION[fake];
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>로그인 페이지</title>
</head>
<body>
<form action='login_ok.php' method='post'>
아이디 : <input type='text' name='id'><br>
비밀번호 : <input type='password' name='pw'> <br>
<input type='hidden' name='l_token' value='<?php echo $_SESSION[fake]; ?>'>
<input type='submit' value='로그인'>
</form>
</body>
</html>
다음 페이지 이름은 login_ok.php로 정합니다.
<?SESSION_START();?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>로그인 중..</title>
</head>
<body>
<?php
$second="300"; //시간초 지정 60 = 1분 저는 넉넉히 5분으로 하겠습니다.
$time=date("YmdHis") -$_SESSION[tokensave];
if(!$_SESSION[token] or !$_SESSION[tokensave] or !$_SESSION[fake] or $_POST[l_token]){echo "토큰이 유효하지 않습니다."; exit;}
if($_SESSION[tokensave]-$_SESSION[fake]==$_POST[l_token]){}else {echo "토큰이 유효하지 않습니다."; exit;}
if($time<$second){
//세션 인증 작업이 성공될때 로그인 커멘드를 집어넣으세요.
}
else {echo "토큰이 유효하지 않습니다."; exit;}
?>
</body>
</html>
세션이 허용되는 서버에서는 다 동작합니다만, 필자가 테스트를 안해서 에러뜨는부분이 있을듯 합니다. 자세한 문의는 댓글에해주세요.
아래의 손가락버튼을 눌러주시면 블로그에 매우 큰 도움이됩니다. 히히
Copyright © 이동마이의 컴퓨터 하루 All Rights Reserved.
'Program > 오래된 PHP 게시판2' 카테고리의 다른 글
[HTML&JAVASCRIPT]자바스크립트로 계산하기 - 곱하기 (0) | 2013.10.23 |
---|---|
[MYSQL & PHP]sql인젝션공격,mysql공격을 막아보자 - part.2 (0) | 2013.10.16 |
[PHP]PHP 경로 탐색 공격 예방하기 - idongmai (0) | 2013.07.31 |
[웹보안&PHP]폼 변조에 대해 알아보자 (0) | 2013.07.29 |
[PHP,HTML]폼 전송 - GET편 (0) | 2013.07.29 |
댓글