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 에도 좀 있을듯.
- 경험삼아 한번씩 설치해보세요. 접속자가 많지 않은곳은 성능 이슈가 없어서 괜찮습니다.