목록Web Hacking/Web 기초 (13)
Information Security
7. 게시글 확인: view.php -메인 페이지의 게시글 목록에서 [제목]을 클릭하면 게시글을 확인할 수 있다. -로그인한 사용자만 게시글을 확인할 수 있다. 1) 로그인하지 않은 사용자가 게시글을 보는 경우 -> 로그인 요구 -> 뒤로가기 2) 로그인한 사용자가 게시글을 보는 경우 -조회수 증가 -내용 출력 -일단 메인 페이지에서 제목을 클릭하면 view.php 페이지로 이동하여 글을 확인할 수 있도록 할 것이다. -> main.php에서 게시글의 목록을 출력하는 태그에서 제목 부분에 링크를 추가한다. -> 링크를 클릭하면 설정된 경로로 GET 방식으로 DB에서 현재 no의 값을 전달한다. -view.php 페이지를 작성한다. -> write.php 페이지와 거의 유사하므로 복사해서 사용했다. -로그..
★ main.php에서 게시글 목록 출력 -메인 페이지에 게시글 목록을 출력해 볼 것이다. -일단 DB에서 board 테이블의 모든 데이터를 가져오는 쿼리를 sql 변수에 저장한다. -> 그리고 mysql_fetch_array() 함수를 사용해서 쿼리의 실행 결과 중 한 행을 배열 형태로 가져온다. ※ mysql_fetch_array() 함수 msql_fetch_array — Fetch row as array http://php.net/manual/en/function.msql-fetch-array.php 현재 board 테이블에 저장되어 있는 게시글은 위와 같다. main.php 페이지의 소스를 보면 select * from board;의 결과 중 한 행만 배열 형태로 가져온 것을 확인할 수 있다. m..
5. 게시글 작성 페이지: write.php -이 코드의 윗 부분은 main.php와 같기 때문에 생략 -제목, 내용을 입력하고 전달하기 위해 input, textarea 태그를 사용한다. -type을 hidden으로 하여 화면에는 보이지 않게 하고, 버튼을 누르면 write_ok.php 페이지에 작성자, 날짜, 조회수(default: 0)가 전달되도록 한다. ->작성자(user_id)는 현재 로그인하고 있는 사용자의 아이디를 가져오기 위해 세션 변수 [name]을 value에 넣는다. ->작성 날짜(today)는 php의 date() 함수를 이용하여 현재 시스템의 시간을 가져온다. ->조회수(count)는 default 값 0을 전달할 것이다. -write.php 페이지의 소스 확인 -위의 코드는 ma..
3. 회원 가입 페이지: signup_ok.php -아이디 중복 체크 기능을 구현할 것이다. -> 아이디가 중복되지 않았으면 해당 회원의 정보를 DB에 저장한다. signup.html 페이지에서 넘어온 값들을 각각 변수들에 저장한다. -user 테이블에 저장되어 있는 user_id 값 중에 전달받은 id 값과 일치하는 값이 있는지 조회하는 select 문을 변수에 저장한다. -이 sql 문을 실행한 후 조회된 결과의 행(row) 수를 exist 변수에 저장한다. -이미 DB에 존재하는 아이디인 경우 exist 변수에는 1이 저장되어 'already user' 메시지를 출력한 뒤 window.history.back()(히스토리 목록에서 이전 URL 로드)가 실행되어 다시 회원 가입 페이지로 이동하게 된다...
부트스트랩(http://bootstrapk.com/)을 이용하여 게시판을 꾸미고 구축해볼 것이다. 부트스트랩을 빠르게 시작하기 위해서 부트스트랩을 다운로드 해준다. 다운로드한 파일의 압축을 해제한다. 파일 확인 게시판 구축 0. 데이터 베이스 simple_board DB 생성 user 테이블 생성 board 테이블 생성 1. 메인 페이지: main.php 예제들 중에 하나를 선택하여 게시판 메인 페이지를 작성할 것이다. 게시판 메인 페이지 작성 우리가 처음에 다운받은 파일(bootstrap-3.3.2-dist)에 위치하는 bootstrap.min.css 파일의 경로를 작성해주고, css 디렉터리에 jumbotron.css 파일을 저장한다. -그리고 회원 가입을 위해서 로그인(Sign in)버튼 옆에 [S..
인증 처리 1. 아파치 웹 서버를 통한 인증 -인증을 한 번 통과한 웹 브라우저는 켜져 있는 이상 다시 인증 요청을 하지 않는다. 아파치 설정 파일을 수정한다. ... ... 위와 같이 작성한 후 저장한다. 변경 내용 적용 -설정 파일에 명시한 AuthUserFile을 생성한다. -파일을 처음 생성하는 경우 -c(create) 옵션을 사용한다. 파일이 존재한다면 -c 옵션 없이 계정을 추가해준다. 파일의 내용 확인 -이제 /var/www/html 파일에 위치한 웹 페이지에 접근할 때 인증이 필요하게 된다. -.htpasswd 파일에 명시된 계정만 접근이 가능하다. -인증을 하면 인증 토큰을 발행한다. 이를 통해서 사용자의 인증 여부를 판단할 수 있다. -위의 이미지에서 index.html 페이지의 인증을..
HTML + PHP + MySQL 실습 -3X3 Photobook #vi photo.php -위의 코드는 3X3 사진첩을 만들 구조이다. -src 속성의 값에 이미지의 URL을 넣어주면 사진첩이 완성된다. -mysql에 접속해서 photobook DB에 photo 테이블을 만든다. -INSERT 문을 이용하여 9개의 URL를 저장한다. -> insert into photo(url) value("url"); 저장된 URL 확인 PHP는 MySQL 관련 라이브러리를 지원한다. ※ 여기서는 에러 메시지가 출력되도록 코드를 작성했지만, 에러 메시지가 출력되면 공격자에게 DB, 테이블 이름이 노출될 수 있으므로 출력하지 않는 것이 좋다. MySQL 함수 mysql_connect(): mysql 서버에 접속 = #..
데이터베이스 RDBMS(Relational DataBase Management System) -> Oracle, SQL, MySQL, MariaDB, ... MySQL mysql 서버에 접속할 수 있는 클라이언트 프로그램 설치 mysql 서버 설치 mysql 시작 mysql의 관리자 root 계정으로 접속 root 계정의 패스워드 설정 패스워드 입력하고 접속 1. SQL(Structured Query Language) -구조화된 질의 언어 1) DDL(Data Definition Language) -데이터 정의어 -데이터베이스 및 테이블 생성(CREATE), 삭제(DROP) 2) DML(Data Manipulation Language) -데이터 조작어 -테이블에 데이터를 삽입(INSERT), 수정(UPD..
WEB 1.0 HTML + Javascript WEB 2.0 +Server application : PHP, python, JSP +HTML : form 태그 Server side script language : PHP 1. PHP 설치 2. 실행 -확장자가 .php인 파일 생성 #php php 파일 실행 3. 기본 구조 // php 블록의 끝 -모든 php 코드는 이 블록 안에 있어야 한다. -블록은 여러 개일 수 있다. -> 하나의 php 파일 안에 php 코드만 존재하지 않기 때문이다. (HTML, Javascript...) 4. 변수 -선언은 없고 정의해서 사용 -변수의 타입은 정의될 때 결정 -$변수이름 1) 미리 선언된 변수 -프로그램 내에서 정의된 변수들 -super_global 변수: $_..
자바 스크립트(Javascript) -1990년대 넷스케이프(웹 브라우저 회사)에 의해서 제일 처음 도입되었다. -넷스케이프의 점유율이 90%이상을 차지하여 영향력이 컸기 때문에 다른 웹 브라우저도 지원을 안할 수 없었다. -현재는 자바스크립트가 웹 표준으로 자리를 잡았다. -자바(java)와는 전혀 상관이 없다. 실행하는 방법 1) 콘솔에서 직접 실행 [F12] -> 콘솔에 코드 입력 2) URL 입력창을 통해 실행 javascript: 코드 -> 해당 코드 바로 실행 3) HTML 파일에 코드 추가 ※ 명령어를 연속으로 사용할 때는 끝에 세미 콜론(;)을 꼭 붙여줘야 한다. 입/출력 -웹 브라우저에서의 입출력 -웹 브라우저에서 어떠한 자바 스크립트 코드를 사용해도 서버는 알 수 없다. 페이지를 받아올..