Computer Security

#1 PHP와 자바 스크립트 , SQL injection 본문

웹보안

#1 PHP와 자바 스크립트 , SQL injection

쿠리 Kuri 2022. 8. 8. 18:30
반응형

PHP란?

  •  PHP는 서버 측 스크립트다. PHP 프로그램은 내려받기 전에 웹 서버에서 실행된다.
  • 웹 브라우저에 내려받은 코드는 프로그램이 실행된 HTML 코드다.
  • 내려받은 HTML 코드에는 PHP 프로그램 코드가 포함되어 있지 않는다.
  • 그리고 PHP는 MySQL과 연동으로 사용하기에 주로 블로그,SNS,쇼핑몰,일정관리등을 만들때 많이 이용한다.

PHP 자바스크립트 차이점

 

* PHP (서버 측 스크립트)

  • PHP는 서버 측 스크립트입니다. PHP를 내려받기 전에 웹서버에서 실행이 먼저 된다.
  • 웹브라우저에 내려받은 코드는 PHP가 포함되지않은 HTML코드다.

- 장점

  • 프로그램 코드가 보여지지 않기에 자바스크립트에 비해 보안성이 뛰어나다.
  •  웹 브라우저의 버전과 종류에 영향을 받지않는다.
  • 웹에 최적화된 언어
  • 웹개발에 필요한 수많은 로직들이 함수의 형태로 미리 제공됨
  • 크로스플랫폼
  • 거의 모든 데이터베이스를 지원
  • 가장 많은 공개소프트웨어가 PHP로 만들어짐

- 단점

  •  실시간으로 처리하는 경우 적합하지 않다.

자바스크립트

  • 자바스크립트는 클라이언트 측 스크립트입니다.
  • HTML 파일에 삽입하거나 사진 등을 웹서버에서 내려받습니다.
  • 내려받은 자바스크립트 프로그램은 웹 브라우저에서 실행되고 동적으로 화면에 변화가 일어납니다.
  • 이처럼 자바스크립트는 웹 브라우저에서 실행됩니다.

 

장점

  • 웹 브라우저에서 하는 조작에 바로 대응할수있다.
  • 애니메이션과 같은 마우스에서 움직이면 바로 상호작용하는 것들을 적용할수있다.
  • 속도
  • 단순함
  • 인기 
  • 정보에 대한 상호운용성
  • 서버 로딩 
  • 풍부한 인터페이스 

단점

  • 프로그램 코드가 쉽게 읽히기에 보안에 취약하다.
  • 웹 브라우저의 버전과 종류에 따라 실행이 불가할수도있다.
  • 디버깅 기능이 부족하다
  • 단일 상속이다
  • 느린 비트 함수이다.
  • 코드에 에러하나만 있어도 렌더링을 중지한다.

 


SQL Injection

  • 코드 인젝션의 한 기법으로 클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격할 수 있는 공격방식을 말한다.
  • 주로 사용자가 입력한 데이터를 제대로 필터링, 이스케이핑하지 못했을 경우에 발생한다. 공격의 쉬운 난이도에 비해 파괴력이 어마어마하기 때문에 시큐어 코딩을 하는 개발자라면 가장 먼저 배우게 되는 내용이다.
  • 이러한 injection 계열의 취약점들은 테스트를 통해 발견하기는 힘들지만 스캐닝툴이나 코드 검증절차를 거치면 보통 쉽게 발견되기 때문에 탐지하기는 쉬운 편이다.
  • 보안회사 Imperva가 2012년에 발표한 보고서에 따르면 월평균 4회가량의 SQL 인젝션 공격이 일어난다고 한다.
  • OWASP에서도 수년 동안 인젝션 기법이 보안 위협 1순위로 분류되었던 만큼 보안에 각별한 주의가 필요하다.

 

 

 

블라인드 SQL 인젝션

  • 'Blind SQL' 인젝션은 쿼리의 결과를 참과 거짓으로만 출력하는 페이지에서 사용하는 공격이다.
  • 출력 내용이 참 / 거짓 밖에 없어서 그것을 이용하여 데이터베이스의 내용을 추측하여 쿼리를 조작한다.

 

 

 

방어 방법

클라이언트 측의 입력을 받을 웹 사이트에서 자바스크립트로 폼 입력값을 한 번 검증하고, 서버 측은 클라이언트 측의 자바스크립트 필터가 없다고 가정하고 한 번 더 입력값을 필터한다.

 

이때 정규표현식등으로 한번 걸러내고, SQL 쿼리로 넘길 때 해당 파라미터를 prepared statement로 입력받고 이를 프로시저로 처리하는게 좋다.

 

다음, 쿼리의 출력값을 한 번 더 필터하고(XSS 공격 방어의 목적이 강하다) 유저에게 전송한다.

 

이렇게 하면 해당 폼에 대해서는 SQL injection 공격이 완전히 차단된다.

 

 

반응형
Comments