- 2015.03.16
1. 실습 사전 준비
1) php 설치 여부 확인
# rpm -qa | grep php
2) php 설치
- php.i386
- php-devel.i386
- php-mysql.i386
- 나머지 필요 항목은 yum이 알아서 설치
# yum install -y php.i386 php-devel.i386 php-mysql.i386
# service httpd restart
# cd /var/www/html
3) php 설치 확인
php 테스트 코드
# vi test.php
1 <?
2 phpinfo();
3 ?>
http://ip/test.php 에서 페이지 제대로 작동하는지 확인
4) mysql 설치
- mysql-server.i386
# yum install -y mysql-server.i386
# service mysqld start
# mysqladmin -u root password [New_Password]
5) mysql 로그인
# mysql -u root -p
Enter Password:
2. 인증
- ID, Password
- 공인 인증서
- OTP (One Time Password)
- 금액 인증 방식 (AA)
3. SQL
SQL : Structured Query Language
- 구조화된 질의 언어
- 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수목적 프로그래밍 언어 (위키백과)
1) SQL 명령어 종류
DDL ( Data Definition Language) : 데이터 정의어, 데이터 변경 불가
- CREATE : DB 나 Table 생성
- DROP : DB 나 Table 삭제
- ALTER : 속성 변경
DCL ( Data Control Language ) : 데이터 제어어
- GRANT : 권한 부여
- REVOKE : 권한 제거
- BEGIN
- COMMIT
- ROLLBACK
DML ( Data Manipulation Language ) : 데이터 조작어
- SELECT : 조회
- UPDATE : 수정
- DELETE : 삭제
- INSERT : 입력
2) mysql 명령어 - DDL
- db와 table 목록 출력
mysql> show databases;
mysql> show tables;
- db 선택
mysql> use [db_name];
- table 정의
mysql> desc [table_name];
- table 생성 : 데이터를 정의
mysql> CREATE [table_name]( column1 type, column2 type, ... );
* varchar(SIZE) : 선택한 size 로 만들어짐. 대용량 일 시 속도 빠름
* text : size 자동 설정, 대용량 일 시 크기를 계산해야 하기 때문에 속도 느림
- table 삭제 : 테이블 안에 데이터가 남아 있으면 안됨.
mysql> DROP TABLE [table_name];
3) mysql 명령어 - DML
* SELECT : 조회
전체 목록 조회
mysql> Select [column_name], [column_name] ... FROM [table_name];
조건 목록 조회
mysql> Select [column_name], [column_name] ... FROM [table_name] WHERE [condition];
* INSERT : 입력
mysql> INSERT INTO [table_name] VALUES( colomn1, column2, .... )
mysql> INSERT INTO [table_name] ( [column1_name], [column2_name], ...) VALUES( [column1_data], [column2_data], ... );
* UPDATE : 수정
mysql> UPDATE [table_name] SET [column_name] = value, [column_name] = value, ...; (X)
=> 가능하지만 모든 행의 데이터가 바뀌기 때문에 조건 필수
mysql> UPDATE [table_name] SET [column_name] = value, [column_name] = value ... [WHERE condition];
* DELETE : 삭제
mysql> DELETE FROM [table_name]; (X)
=> table 전체 삭제
mysql> DELETE FROM [table_name] WHERE [condition]
[ 실습 ]
mysql> show databases;
mysql> use test;
mysql> CREATE TABLE user ( num int, name varchar(20), id text, pw text );
mysql> show tables;
mysql> desc user;
mysql> DROP TABLE user;
mysql> CREATE TABLE user ( num int, name varchar(20), id text, pw text );
mysql> INSERT INTO user VALUES( 0, 'admin', 'admin', password('1234') );
mysql> INSERT INTO user( num, id, pw ) VALUES(1, 'guest', '1234' );
mysql> SELECT * FROM user;
mysql> SELECT * FROM user WHERE num = 0;
mysql> SELECT * FROM user WHERE id = 'admin';
mysql> SELECT * FROM user WHERE id = "guest";
mysql> SELECT * FROM user WHERE num = 0 and id = 'admin';
mysql> SELECT * FROM user WHERE num = 0 or id = 'admin';
mysql> UPDATE user SET name='guest', pw=password('1234') WHERE num = 1;
mysql> INSERT INTO user VALUES( 2, 'asdf', 'asdf', password('1234') );
mysql> DELETE FROM user WHERE id = 'asdf';
mysql> quit
4. 페이지 작성
[ longin.html ] [ login_check.php ]
input : id, pw -> Auth
<┘ 성공
<┘ 실패
# pwd
/var/www/html
# vi login.html
1 <html>
2 <head>
3 <title> Log In </title>
4 </head>
5
6 <body>
7 <form method=POST action=login_check.php>
8 id <input type="text" name="id"><br>
9 pw <input type="password" name="pw"><br>
10 <input type="submit" value="Login">
11 </form>
12 </body>
13
14 </html>
# vi index.html
17 <li> <a href="login.html">Log In</a> </li>
* Server side script : 서버에서 처리한 결과만 받아볼 수 있음
- php, jsp
* Client side script : 내가 볼 수 있음
- html, Ajax, JavaScript
5. GET, POST
1) http의 stack
http -- Application Protocal
tcp ┐
ip -- 전송
Ethernet ┘
[ HTTP Header ]
- Start-line : POST, URL, HTTP/1.1
- header : 서버와의 원할한 통신 위한 정보
- 빈칸
- Message-Body : id=asdf&pw=asdf .....
이렇게 Message-Body 에 값이 숨겨져서 인수가 전달 되는 것이 POST 방식이다.
반면, header의 url에 정보를 붙여 보내는 방식이 GET 방식이다.
하지만 헤더의 크기가 정해져 있고 url 창에 노출되기 때문에 상대적으로 보안에 취약하다.
ex)
http://gall.dcinside.com/board/list/?id=girl
protocol - URL - WebApplication - ? 로 URL과 변수 구분
(=> ? 앞에 index.php 가 숨겨져 있음)
'Study > 웹보안' 카테고리의 다른 글
[08] cookie 및 session 이용한 인증, SQL Injection, secure 코딩 (0) | 2015.05.07 |
---|---|
[07] php 셋팅, mysql 연동, 계정 인증, Web 인증방식, cookie 이용 인증 및 logout (0) | 2015.05.07 |
[05] 간단한 웹페이지 작성, index.html, main.css (0) | 2015.05.07 |
[04] Linux 초기설정, web 개요, html, webserver 구축 (0) | 2015.05.07 |
[03] 자/후손 선택자, action, a, 부정 속성, px, %, em, css 색상, 배경 이미지, 가시속성(inline & block), 투명도, box, font, 위치속성, z-index (0) | 2015.05.07 |