Sql Injection

  • Sql Injection
    • DB에 사용되는 SQL문이 입력 받은 값을 사용해서 생성될 때
      특수한 기호 등을 사용해서 본래의 기능이 아닌 다른 기능의 SQL문이 동작하도록 하는 공격방법
    • 방어방법
      • 입력단에서 방어
        • 입력단어중 insert, update ,delete 등이 들어있다면 페이지 실행을 중지
          • 주요 단어 : SELECT, UPDATE, DELETE, INSERT, DROP, UNION 등등
        • 장점 : 대응이 간단하다
        • 단점 : 공격이 아닌 것에도 반응한다.
        • 웹 프로그램에서 직접 처리하거나, 아파치 ModSecurity 등을 설치해서 사용
      • magic_quotes
        • PHP지원하는 MySQL 인젝션 방지법
          '나 "에 자동으로 \를 붙여주는 방식
        • 장점 : 이럴 경우 MySQL에 SQL이 생성될 때 자동으로 escape 처리가 된다는 장점이 있다.
        • 단점 : 문제는 다른 DBMS에서 escape처리가 \가 아닌 경우가 있다.
          그리고 계속 내용을 불러서 수정 저장할 경우 ' -> \' -> \\' -> \\\\' 처럼  \가 계속 붙는 경우도 있다.
        • PHP 5.3.0 부터는 사용금지(DEPRECATED) PHP 6.0.0에서는 해당 기능 자체가 사라진다.
      • Bind
        • SQL 문에 입력 받은 값을 바로 쓰지 않고 bind 문자열을 대신 사용한다.
          입력 받은 값을 그 뒤 바인드 시켜서 해당 값에 대응되도록 한다.
        • 장점 : Injection에서 해방이다. 바인드 되는 값은 SQL문을 바꾸기 않기 때문에 Injection 당하지 않는다.
          • 아, 기본으로 제공되는게 아니라 에뮬레이팅 된것이라면 bind 메소드(또는 함수)에서 escape 처리해주면 된다.
        • 단점 : 프로그램의 쿼리 부분을 다시 만들어야한다.
          • DB클래스 등을 사용했다면 수정 부분이 줄어들겠지만, 페이지에서 바로 해당 DBMS함수로 쿼리를 사용한 방식이라면.... 언제 다 뜯어낼꼬...
  • 링크
댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
목록형 📷 갤러리형
제목
[기본형] HTML (with 부트스트랩5.3 , jquery 3.7, vue.js)
유용한 리눅스(LINUX) 명령어
[공지] 기술 게시판
4.28
4.29
4.30
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.10
5.11
5.12
5.13
5.14
5.15
5.16
5.17
5.18
5.19
5.20
5.21
5.22
5.23
5.24
5.25
5.26
5.27
5.28
5.29
5.30
5.31
6.1