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

+ Recent posts