웹개발 20

검색 게시판_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..

Javascript - 7 - querySelecor() / Event(addEventListener)

오늘 강의에서는 EventHandler에 대해 간단히 알아보았다. 지난 강의 에서 HTML의 엘리먼트를 자바스크립트에서 접근하는 방법으로 ID 로 접근하는 document.getElementById() CLASS 로 접근하는 document.querySelector() 오늘은 CLASS 이름으로 엘리먼트에 접근해서 이벤트핸들러를 적용해보았다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Document Good bye~! Colored by Color Scripter cs 위와 같이 HTML 페이지가 작성 돼 있을 때 div 태그안의 h1태그에 접근하는 방법은 아래와 같다. 1 const h1 = document.querySelector("div.hello:first-..

Javascript - 6 - getElementById

#3.0 The Document Object #3.1 HTML in Javascript #3.2 Searching For Elements 오늘은 html Elements에 자바스크립트로 접근하고, 변경하는 법에 대해 알아보겠다. console 창에 "document.title" 처럼 입력하면 html 파일의 Element를 가져온다. 엘리먼트에 접근할 수 있을 뿐만 아니라 값을 변경할 수도 있다. document.title = "asdfasdf" 이와 같이 입력하면 html의 title 엘리먼트에 어떻게 입력 돼 있든 자바스크립트로 변경한 값으로 나타난다. 다음으로는 getElementById()에 대해 알아보자. 쉽게 얘기하면 html 엘리먼트에 부여한 id값에 접근하는 것이다. 1 2 3 4 Grab..

Javascript - 5

#2.13 Conditionals 오늘은 Prompt로 숫자를 입력 받아서 19세 미만이면 "미성년자" 19세부터 60세까지는 "술 마시자" 60세 이상이면 "당신 마음대로 하세요." 를 출력해 보겠다. 단, 문자 or 음수를 입력할 경우 "양수를 입력하세요." 라는 메시지를 출력하겠다. 1 2 3 4 5 6 7 8 9 10 11 // #2.13 Conditionals const age = parseInt(prompt("How old are you?")); if(isNaN(age) || age 미성년자 19이상 60이하이면 > 성인 60세 초과이면 > 마음대로 하세요. || (OR) true true true true false true false true true false false false && ..

Javascript - 4

오늘은 여태까지 배운 것을 복습. 객체를 만들 수 있고, 함수를 만들 수 있다. * 간단한 계산기를 만들어 보자. 매우 간단하다 부끄럽슴돠. 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 const calculator = { add: function(a,b){ console.log(a+b); }, minus: function(a,b){ console.log(a-b); }, times: function(a,b){ console.log(a*b); }, divide: function(a,b){ console.log(a/b); }, powerOf: function(a,b){ console.log(a**b); }, }; calcul..

Javascript - 3

#2.6 Objects #2.7 Functions 객체는 중괄호{}로 감싸져 있고, 콜론:으로 구분된 이름/값 쌍들이 쉼표로 분리된 목록의 형태 객체를 만들 때 규칙 1. property 이름 중복 불가 2. property의 이름과 property의 값 사이는 콜론:으로 구분한다. 3. property를 추가할 때는 ,(쉼표)를 붙여준다. 4. property값은 어느 Type이나 가능하다(배열과 달리 이질형 데이터 저장 가능) 객체 접근 방법 객체이름.property이름 or 객체이름["property이름"]과 같은 형식으로 접근. 대괄호[] 표현은 변수를 사용할 때 객체 특징 1. 순서가 없는 데이터 모음. 2. 키와 값의 쌍으로 구성된 데이터의 모음 3. 배열처럼 index로 순차적 접근이 아닌 ..

Javascript - 2

#2.3 Const and Let #2.4 Booleans #2.5 Arrays 변수 선언 방법 const - 변수를 상수로 선언한다.(한번 대입된 값을 변경할 수 없다.) - 값을 변경하려하면 변경할 수 없다고 알려준다. let - 업데이트?!가 가능한 형태로 변수를 선언한다.(프로그램 중 내가 원하는 값으로 바꾸며 사용할 수 있다.) var - 예전의 자바스크립트에서 변수를 선언할 때 사용하던 예약어(아무런 기능 없다.) 니코쌤의 규칙 : 기본적으로 const를 사용, 필요 시 let을 사용 / var는 사용하지 말고, 알고만 있자. 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 3..