1 . cookie //보안상 취약(사용자의 정보 노출)
-로그인 상태를 계속 유지시켜 주는것이다.
웹 어플리케이션을 이용한 인증 처리
- 인증을 하기 위한 사용자 DB 생성
- 입력 -> 인증(authentication -> 인가(authorization)
입력: 아이디, 패스워드
mysql > SELECT * FROM 인증테이블 WHERE id='$id' and pw='$pw';
ex)
id=use
pw=use
SELECT * from user_info where id='use' and pw=md5('use');
// 테이블에 있는 값과 비교해서 같으면 출력하게 해준다.
[실습]
- 사용자로부터 아이디와 패스워드를 입력받아서
입력된 값이 디비에 존재한다면 'login success'알람을 출력 그렇지 않으면 'login failed' 알람을 출력하는 프로그램을 작성
$query = "SELECT * FROM user_info WHERE id='$id' and pw=md5('$pw')";
$res = mysql_query($query);
$cnt= mysql_num_rows($res);
if ($cnt) {
echo "<script> alert('login success'); </script>";
}
else{
echo "<script> alert('login failed'); </script>"; }
}
setcookie(); //cookie를 할당한다.
ex)
setcookie("name",$id , time()+86400, "/");
setcookie("auth",md5($id.$pw) , time()+86400, "/");
실습에서 만든 파일에서 id : admin pw : 1234 로 로그인을 하고
login.php을 실행 시키면
이렇게 쿠키가 남아 있는 것을 볼 수 있다.
로그아웃 만들기.
이파일을 하이퍼링크로 열면 로그아웃이 된다.
2. session //이 값만 알아내도 id와passwd 없이 접속가능
-사용자의 정보를 서버에저장
-session_start() -> session_id -> cookie
-세션을 사용하기 위해서는 session_start() 함수를 먼저 호출
- 클라이언트 (웹 브라우저) -> session_id
session의 경로와 id 이다
session을 사용하면 그림과 같이 ID가 보인다.
include " "; // 다른 파일에 있는 내용을 가져와서 실행 시켜준다.
session을 통한 로그인
check.php 파일
session.php 파일
login.php파일
DB에 저장되어 있는 아이디를 입력하게 되면
/var/lib/php/session 에 세션아이디가 남겨진다.
//session_start(); 에 의해 세션 아이디가 남는다.
로그아웃을 하게 되면
세션이 사라지게 된다.
세션 사라지게하는 명령어 //logout.php
session_destroy()
그리고 아무런 값을 입력하지 않았을 때 session.php파일이 실행되어
라는 문구가 뜨고 다시 로그인 페이지로 되돌아 간다.
아이디는 같은데 비밀번호가 다르게 입력 받아지면
session 파일이 실행하여 다시 원래의 login페이지 창으로 돌아온다.
해시와 암호화
hash(해시)
- 암호화는 아니다
- 평문(plain text) -> hash value
- 단방향 함수( 복호화가 존재하지 않는다.)
- 평문의 길이와 상관없이 hash value의 길이는 고정 길이
- 평문이 같으면 해시된 값도 같다.
- 평문이 다르면 해시값도 다르다.
해시 알고리즘
-md4 ,md5 ,sha1 ,sha2 ...
encryption(암호화)
- 평문(plain text) -> 암호문(cipher text)
- 키를 필요로 한다
- 암/복호화 가 가능
- 평문의 길이에 따라 암호문의 길이도 달라진다.
- 평문이 같아도 키가 다르면 암호문도 달라진다.
-RSA , DES , 시저 암호, enigma, ...
문자 인코딩 : base64 encoding //웹에서 많이 쓰는 인코딩
-64진법 : 모든 문자를 64개의 문자로 표현
-4바이트 단위로 인코딩이 된다. (4바이트가 부족하면 '=' 로 대체)
'Web Security' 카테고리의 다른 글
가상호스팅 (0) | 2019.03.18 |
---|---|
웹(WWW) (3) | 2019.03.13 |
아파치 웹 서버 인증 과 DB (0) | 2018.02.21 |
데이터 전달 (0) | 2018.02.20 |
CGI(PHP) (0) | 2018.02.19 |