자유게시판

SQL 인젝션 보안

최고관리자 0 4,609 2017.11.04 19:23

1. pdo의 bind parameter,  pdo의 quota 함수,  mysql_real_eacape_string 함수 등을 이용
  - pdo  bind 를 쓰는게 가장 바람직합니다. 그냥 bind는 의미 없구요. order by 구문은 bind가 안되는 부분임으로
    코드에서 order by value 를 꼭 확인해야 합니다. url 에 온 파라메타 그대로 order by에 쓰면 안돼요!!

2. url 파라메타에 select, update, union, and, or 구문 사용금지(그외 웹용 특수문자 입력금지)
    - 게시판은 이게 좀 곤란하죠... 게시판의 제목과, 본문, 코멘트는 그누보드 필터 함수를 꼭 쓰셔야 해요.(그누보드 함수 좋아요)

3. 웹서버에 웹방화벽 모듈 설치 mod_security or webknight, naxsi, dot depeder 등등..
  - sql injection 공격이 한번 들어온곳은 계속 들어옴으로, 웹방화벽에서 추가를 해야 해요.. 개인적으로 nginx 모듈인 naxsi 를 추천합니다. 이건 다시한번 정리해서 올릴 예정입니다.

4. 웹방화벽 기능이 있는 cdn 서비스 이용 (클라우드 플레어 등)
  - 클라우드 플레어의 프로 플랜 이상이면 사용이 가능합니다. 정상적인걸 막는 경우도 있음으로 룰셋을 잘 관리해야 합니다.
    (그런데 클라우드플레어 국내에선 너무 느려서.... 공격들어올때 잠깐 켰다가 끄는 방법을 추천)

5. 웹소스로 된 방화벽 코드 추가(kisa 캐슬.. 성능은 예전에 안 좋았는데, 요즘은 어떤지 모르겠음.). github 에도 좀 있을듯.
  - 경험삼아 한번씩 설치해보세요. 접속자가 많지 않은곳은 성능 이슈가 없어서 괜찮습니다.
 

Comments

Category
State
  • 현재 접속자 154 명
  • 오늘 방문자 1,328 명
  • 어제 방문자 920 명
  • 최대 방문자 7,216 명
  • 전체 방문자 1,775,121 명
  • 전체 게시물 33,433 개
  • 전체 댓글수 19 개
  • 전체 회원수 532 명
Facebook Twitter GooglePlus KakaoStory NaverBand