본문 바로가기
WEB_Security

06. GET,POST 차이 & DB 개념

by Jnamelight 2017. 5. 17.

POST & GET


GET 방식


  - 보안상 취약하다.

       > 입력값이 외부에 그대로 노출

       > 확인이 쉽고, 변조하기도 쉽다.

  

  - 입력값의 크기가 제한되어 있다.

      > 정해진 헤더의 크기보다 큰 데이터는 전달이 불가능 (헤더를 사용함) 

  

  - " $_GET " 이라는 슈퍼글로벌스 변수를 이용



POST 방식 


   - 폼 태그 등장 : HTML의 입력 태그


   - 폼을 통해서만 전달이 가능

   - 입력값의 크기는 제한없이 전송이 가능


" https://www.w3schools.com/html/default.asp " 를 참조하여 기본적인 FORM 형태를 알수 있다.



HTML FORM



   - $_POST 역시 GET과 마찬가지로 슈퍼글로벌스 변수이다.

      >  printf_r( $_POST ), echo $_POST 로 변수가 있는지 확인

   

   - GET 으로 받아오는 정보는 POST로 받을수가 없다.

   - 사진1 참조  :  기본적인 FORM을 만들었다 이건 POST 방식을

                        사용하기 위해서,, 무조건 필요 


    <form method=처리방식, action=처리할 웹어플리케이션 경로>



 위와 같이 기본적인 FORM 형태를 만들어 보았다.



결과 화면이다.



POST 는 폼 형태에서만 데이터를 전달할수 있다고 했는대 , GET 방식 역시 폼 형태로 전달이 가능하다.

그럼 이번에는 FORM 을 이용하여 GET 방식과 POST 방식을 모두 해보도록 하자.




일단은 GET형식으로 만들어 보았다.

GET 형식은 FORM 형태를 그냥 쓰면 자동으로 GET 형식으로 처리하기 때문에 그냥 갔다 쓰면된다.



그럼 위와 같은 화면이 나오고



값을 전달하게 되면 자동으로 GET 방식 형식으로 처리가 된다.



다음은 POST 형식이다 POST  형식은 위와 같이 

<form method=POST action="처리할 파일경로">를 작성해주어야한다

나는 같은 파일내에서 처리하기 때문에 현재 작성하는 파일로 지정해주었다.




그럼 결과값은 이런식으로 URL에 표시가 나지 않은 상태에서 데이터가 전달된다

하지만 보안상으로 완벽하게 좋다라고는 볼 수 없다.

이유는 소스코드 보기를 통해서도 얼마든지 취약점 분석이 가능하다.



위와 같이 소스보기를 통해서 어떤 이름으로 데이터를 보냈는지 파악할수 있기 때문에

보안상으로 완벽하다고 볼수 없다. (단지 GET보다는 조금 나은 수준)




데이터베이스




   - 대용량의 데이터들을 효율적으로 관리하기 위한 도구

   - 빠른 시간안에 검색, 아주 큰 데이터를 효율적으로 저장

   - 즉 데이터베이스는 파일을 관리해주는 프로그램이다 (정렬된형태)


   - 그냥 파일로 저장하지 않고, 나중에 사용하기 쉬운 형태로 

     저장과 관리


  - 이러한 DB를 관리해주는 프로그램을 DBMS 

      -> MySQL, MariaDB, Oracle, DB2, ...


* 데이터베이스 이전 : 파일 형태로 저장

  

* 서버에 어떠한 데이터를 저장 -> 파일이외의 방법은 없다!


리눅스에 DB를 설치하는 것은  

2017/05/16 - [PHP] - 10.PHP : 배열 & 리눅스에 PHP 환경만들기

위 글을 참조하면 된다.



SQL ( Structured Query Language ) 는 데이터베이스에서 사용하는 중요한 언어이다. 구조화된 질의 언어라고도 하는대

SQL 을 통해서 데이터베이스의 데이터들을 다루기 때문에 잘 알아두어야한다. 

하지만 취약점을 분석하기에는 6가지 정도면 충분하기 때문에 가장 중요한 6가지를 알아보자.


1. DDL ( Data Definition Language )

  - 데이터 정의어


  - CREATE, DROP  : DB 생성, 삭제 명령어


  - 실제 데이터를 조작하지 않는 쿼리들, 말 그대로 정의만.


2. DML ( Data Manupulation Language )

  - 데이터 조작어


  - SELECT, INSERT, UPDATE , DELETE

    // 조회    삽입     갱신         삭제

  - 데이터를 조작할 수 있는 쿼리


3. DCL ( Data Control Language )

   - 데이터 제어어


  - GRANT, REVOKE, .....

  - 권한, 트랜잭션, ... (데이터 동기화에 관련 )


보안에서는 1, 2번 주로 사용한다, 즉 1, 2번에 있는 명령어 6가지를 꼭 외우도록 하자!






'WEB_Security' 카테고리의 다른 글

08. 데이터베이스 실습 (PHP)  (0) 2017.05.19
07. 데이터베이스 실습  (0) 2017.05.18
05. PHP 구조 및 GET 방식  (0) 2017.05.16
04. 웹 보안 간단한 JavaScript  (0) 2017.05.13
03. 웹 보안 서버구축  (0) 2017.05.12

댓글