명

SQL 인젝션은 어떻게 막을수 있나요?

· 2017-11-03 (금) 16:34:41 · 8367 · 4
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 에도 좀 있을듯.
- 경험삼아 한번씩 설치해보세요. 접속자가 많지 않은곳은 성능 이슈가 없어서 괜찮습니다.

지금 사이트와 개발자 상황에 맞춰서 5가지중에 가능한걸 적용하시면 됩니다.(2개 이상 적용하면 더 좋습니다.)
(옆동네에 답변 달아둔건데,,, 조금더 정리해서 올립니다.)
|

댓글 4개

좋은글 감사합니다.
해당글에서 "nginx 모듈인 naxsi " 이부분을 좀더 자세히 알고 싶네요 ^^
2017-11-04 (토) 00:59:44
언제 한번 공유할 기회가 있을거에요. 국내에선 많이 쓰지 않는것 같은데, 개인적으로 좋게 평가하고 있습니다.
naxsi 간단한 셋팅 설명해주세요!! ㅠ
ORM을 사용하면 SQL 인젝션을 막는다고 배우고 있습니다. (라라벨의 Eloquent)
댓글을 작성하시려면 로그인이 필요합니다.

그누보드5 팁자료실

2,788건
+
제목 글쓴이 날짜 조회
17-11-05 조회 1.4만
17-11-05 조회 2만
17-11-03 조회 7,356
17-11-03 조회 8,368
17-11-03 조회 6,688
17-11-02 조회 8,086
17-11-01 조회 8,335
17-11-01 조회 5,347
17-11-01 조회 9,613
17-10-21 조회 8,812
17-10-21 조회 6,682
17-10-21 조회 1.5만
17-10-17 조회 6,293
17-10-16 조회 8,805
17-10-12 조회 6,660
17-10-12 조회 7,823
17-10-12 조회 8,267
17-10-10 조회 8,020
17-10-10 조회 8,952
17-10-08 조회 8,149
17-10-05 조회 6,436
17-10-04 조회 1.2만
17-10-02 조회 6,800
17-10-02 조회 6,433
17-10-01 조회 7,363
17-09-29 조회 6,447
17-09-29 조회 8,574
17-09-28 조회 8,012
17-09-27 조회 6,864
17-09-25 조회 6,464