웹개발/PHP- 홈페이지 구현 9

검색 게시판_XSS 대응_htmlspecialchars()

오늘은 PHP의 htmlspecialchars() Function을 사용해 XSS 취약점에 대해 시큐어 코딩을 해보았다. htmlspecialchars() 함수는 일부 정의된 문자를 HTML 엔티티로 변환한다. 사전에 정의된 문자는 다음과 같다. 특수문자 변환된 문자 & & " $quot; ' ' > XSS에서는 공격자가 악의적인 스크립트를 삽입하는 공격이기에 를 못 쓰게 만들어야 한다. 여러가지 방안이 있지만 가장 좋은 대응책은 htmlspecialchars()함수를 사용하는것이다. 나의 웹사이트의 경우 1. 게시판 검색창 2. 게시판 메인화면의 제목이 보여지는 곳(회원전용) 3. 게시판 메인화면의 제목, 작성자가 보여지는 곳(비회원문의) 4. 글을 들어가서 읽는 페이지의 제목, 내용 5. 기..

로그인 페이지_prepared statement

SQL Injection 공격의 대응방안의 시작이자 끝 prepared statement. 이걸 하면 아예 SQL Injection 공격이 불가능하다는데, 1) 귀찮아서 안 하는 곳 2) 제대로 구현을 안 해놓은 곳이 있단다. 검색을 해보니 객체지향 방식과 절차형?! 방식이 있다는데, 나는 일단 객체를 잘 모르니. 절차형 방식으로 구현해보았다. 기존 방식의 경우 SQL 쿼리문을 만들고, 바로 mysqli_카레를 주문 때렸고, 그결과를 변수에 담아 사용 했다. 그러다 보니 로그인 ID 창에 공격자가 SQL Injection 공격 을 위해 (' or 1)등과 같은 값을 입력하면 이 값자체가 SQL 구문으로 인식되어 공격이 가능했다. [아, 물론 이 SQL문에서는 위의 값으로는 우회가 되지 않는다. 식별 인증..

로그인 페이지 구현

오늘은 로그인 페이지를 구현했다. 못생겼다. 꾸미는 것보다는 내부적으로 어떻게 구현이 되는지 아는 것이 중요하다. 다음주 부터는 시큐어 코딩. login_view.php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 loginPage LOGIN PAGE 아이디 패스워드 로그인 Colored by Color Scripter cs login_server.php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 4..

회원가입 페이지 구현

회원가입 페이지를 PHP로 구현해 보았다. 역시 이쁘지 않다. mysqli_real_escape_string() 이란? php에서 제공하는 함수로 MYSQL과 커넥션을할때 String을 Escape한 상태로 만들어준다. 사용법 : mysqli_real_escape_string(connection, escapestring); - MYSQL 과 연결하는 connection과 escape형태로 만들어줄 string을 입력한다. Escape string이란? 우리가 string을 입력할때 Tom's cat 이란 입력을 하면 '는 sql문에 앞서 있던 ' 와 중첩이 될 수 있다. 이러한 문제를 막기위해 \n, \r \" 처럼 구별해주는 형태로 만들어주는 것을 Escape string 이라고 한다. 1_regist..

데이터 전송 방식 GET & POST

form 태그의 method 속성에 데이터 전송 방식을 대입한다. 이 방식엔은 GET과 POST가 있으며, 1)GET 방식 GET은 데이터를 URL에 붙여 데이터를 전송하는 방식이다. http://주소?age=36&hobby=weight traning 위의 주소에서 age는 나이를 작성하는 입력폼 name의 속성값이 표시되며 hobby는 취미를 선택하는 입력폼 name의 속성값이 표시된다. or age의 파라미터에는 값이 36이 있으며 값은 "="로 구분이 가능하다. GET방식으로 전송되는 값이 URL에 전송될 때 첫번째 파라미터 앞에는 ?가 사용되며 이후는 &가 사용된다. form과 input을 이용하여 사용자로 부터 데이터를 입력받아 다른 php파일로 전송한다. 나이 : 취미 : $_GET['age'..

3일차_초보자를 위한 PHP 200제

isset(변수명) - 변수가 선언되었는지 확인, 선언되었다면, boolean 데이터형인 true를 반환 아니면 false를 반환한다. settype(변수명, 변환할 데이터형) - 해당 변수를 내가 원하는 데이터형으로 변환한다. gettype(변수명) - 변수의 데이터형이 무엇인지 보여준다. empty(변수명) - 변수가 빈 값이라면 true를 반환, 아니라면 false를 반환 - 빈 값 : 빈 문자열(''), 널값(NULL,null), 값이 빈 배열, 값이 정수 0인 경우, 값이 문자열 '0'인 경우 phpinfo() - 현재 php의 설정을 볼 수 있다.