Web
-
[CodeIgniter] 6. 놓치기 쉬운 보안Web/CodeIgniter 2015. 8. 24. 15:40
6.1 SQL 삽입 공격(SQL Injection Attack) SQL 삽입 공격을 이용한 여러 가지 사례가 있지만 하나의 예를 들어 CodeIgniter에서 어떻게 막을 수 있는지 살펴 보도록 하겠습니다. 다음과 같이 user 테이블이 있다고 가정합니다. id user_id password 1 advisor 1234 SQL 삽입 공격에 대해 취약한 사이트에 아이디 advisor' #, 비밀번호 2222로 로그인합니다. * 로그인 체크 쿼리 SELECT * FROM user WHERE id = '$id' AND passwd = '$passwd'; *SQL 삽입 공격에 의한 변조된 쿼리 SELECT * FROM user WHERE id = 'advisor'; 변조된 쿼리를 보면 쿼리 중간에 #이 들어가 있..
-
[CodeIgniter] 5. 폼 검증하기Web/CodeIgniter 2015. 8. 24. 15:00
4장에서 게시판의 기본 골격을 만들었습니다. 5장에서는 CodeIgniter의 라이브러리 중 하나인 form_validation 을 이용해 값의 존재유무, 데이터 형식(한글, 영문, 숫자 등), 최소, 최대 길이 제한, 중복 아이디 체크나 비밀번호 입력 여부 등을 검증해보겠습니다. 5.1 기본 형태 4장의 검색이나 글쓰기 소스에서는 자바스크립트를 이용해 뷰 단에서 체크했습니다. CodeIgniter 폼 검증은 프로그램 단에서 검증하는 것이라 전송 후에 체크하고 설정된 룰을 통과하지 못할 경우 다시 뷰에 에러 메세지를 표시하는 형태입니다. 자바스크립트로 뷰 단에서 체크하는 것보다 한번 전송되고 다시 폼이 표시되는 형태라 서버 리소스를 차지할 수 있습니다. 그럼에도 프로그램 단에서 체크하는 폼 전송 형태를 ..
-
[CodeIgniter] 4. 게시판 프로젝트 - 수정, 삭제Web/CodeIgniter 2015. 8. 23. 15:13
4.5 수정 기능 추가하기 수정기능은 입력 기능을 수정하여 사용합니다. write 메서드를 복사하여 modify 메서드를 만들고 수정합니다. * bbs/application/controllers/board.php 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
-
[CodeIgniter] 4. 게시판 프로젝트 - 검색, 입력, 보기 기능Web/CodeIgniter 2015. 8. 23. 14:00
4.2.3 검색 만들기 이번 절은 게시물 목록의 마지막인 검색 만들기입니다. 앞 절에서 기본 목록 모델에 페이지 변수를 추가한 것을 만들었습니다. 뷰에서 검색어를 컨트롤러에 전송하고, 컨트롤러는 검색어를 처리해서 모델을 통해 데이터를 가져와서 다시 뷰로 전달해 화면에 출력합니다. 이번 절은 뷰 파일부터 살펴보겠습니다. 바로 위 참고에서 설명했던 것처럼 게시물 목록 화면이 출력된 후의 검색어 입력 부분부터 시작하므로 뷰 파일에서 시작하겠습니다. * bbs/application/views/board/list_v.php 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758..
-
[CodeIgniter] 4. 게시판 프로젝트 - DB 설계, 페이징 처리Web/CodeIgniter 2015. 8. 21. 19:24
지금까지 CodeIgniter 개발 환경을 구성하고 기본 구조에 대해 알아봤습니다. 4장은 MySQL 테이블을 구성하고 게시판을 실제로 만들어 보면서 CodeIgniterd의 MVC 패턴 사용방법과 컨트롤러의 몇 가지 유형을 알아봅니다. 게시판은 하나의 테이블로 원 글과 댓글을 표현하는 구조이며 리스트, 검색, 페이징, 상세보기, 쓰기, 수정, 삭제로 이루어져 있습니다. 개발을 할 때 제일 먼저 시작하는 작업인 테이블 만들기부터 시작합시다. 4.1 게시판 테이블 만들기 ci_book 데이터베이스를 생성하고 MySQL 콘솔에 접속합니다. mysqladmin -uroot -p create ci_book mysql -uroot -p ci_book grant select, insert, update, delet..
-
[CodeIgniter] 3. Todo 애플리케이션 프로젝트Web/CodeIgniter 2015. 8. 21. 16:43
이번 장에서는 할 일을 관리하는 애플리케이션을 만들어보면서 CodeIgniter의 개념을 익혀보도록 하겠습니다. CodeIgniter는 MVC 패턴으로 되어있습니다. 지금 당장 MVC 패턴이 무엇인지 알 필요는 없습니다. 3장을 마치면 MVC에 대해 감을 잡을 수 있습니다. 다만, 여기서는 MVC 패턴으로 되어 있기 때문에 CodeIgniter로 애플리케이션을 개발할 때는 모델, 뷰, 컨트롤러를 각각 만들어야 한다는 점만 알면 됩니다. 먼저, 웹 서버 루트에 todo 디렉터리를 만들고 여기에 CodeIgniter를 복사합니다. - xampp/htdocs/todo todo 디렉터리에 CodeIgniter가 제데로 설치되었다면 주소창에 localhost/todo 를 입력했을 때 CodeIgniter 초기 화..
-
[CodeIgniter] 2. CodeIgniter 개발 환경 구성Web/CodeIgniter 2015. 7. 17. 11:26
Chapter 2. CodeIgniter 개발 환경 구성 CodeIgniter는 PHP 환경에서 작동합니다. 운영체제에 상관없이 PHP가 작동하는 환경이라면 사용할 수 있습니다. 윈도우를 기준으로 개발 환경 구성을 해보도록 하곘습니다. 2.1 윈도우에서 환경 구성하기 윈도우에서 PHP 개발 환경을 구성하려면 Apache, PHP, MySQL (APM)을 각각 설치하고 설정해야 하는데, 이 과정은 단순 반복이어서 번거롭습니다. XAMPP를 이용하면 APM을 한 번에 설치하고 관리할 수 있습니다. 2.1.1 XAMPP 설치 XAMPP 페이지(https://www.apachefriends.org/index.html)를 방문합니다. 다운로드 탭에 XAMPP for Windows 를 클릭하여 다운받습니다. 설치 ..
-
[CodeIgniter] 1. CodeIgniter 소개Web/CodeIgniter 2015. 7. 17. 10:31
Chapter 1. CodeIgniter 소개 CodeIgniter는 PHP로 웹 사이트를 구축하고자 하는 사람들을 위한 개발 프레임워크(Framework)입니다. CodeIgniter는 일반적인 방식으로 코딩하는 PHP 개발자에게 풍부한 라이브러리, 직관적 인터페이스, 쉬운 로직을 제공함으로써 개발 속도를 높여 줍니다. 불필요한 코딩을 최소화하여 비지니스 로직에만 집중하게 해줍니다. 1.1 CodeIgniter의 특징 - 가벼움(Lightness) : CodeIgniter는 상당히 적은 리소스만 사용하여 상당히 가볍습니다. - 최소한의 노력으로 사용할 수 있고 설정이 거의 필요 없습니다. : APM이 설치된 환경에 CodeIgniter 소스를 복사하는 것만으로도 'Welcome to CodeIgnite..