SQL 인젝션 시도 차단

워드프레스에서 특정한 SQL 인젝션 시도와 같이 위험한 파라메터를 차단하는 방법에는 여러 가지가 있습니다. 제시된 파라메터는 SQL 인젝션 공격을 시도하는 것으로 보입니다. 이를 방지하기 위한 몇 가지 방법을 소개하겠습니다.

  1. 웹 어플리케이션 방화벽(WAF) 사용: 워드프레스 사이트를 보호하는 가장 효과적인 방법 중 하나는 WAF를 사용하는 것입니다. WAF는 악의적인 트래픽과 공격을 차단하도록 설계되었습니다. 예를 들어, Cloudflare나 Sucuri와 같은 서비스는 SQL 인젝션 공격을 자동으로 차단할 수 있습니다.
  2. 보안 플러그인 설치: 여러 워드프레스 보안 플러그인이 SQL 인젝션과 같은 공격을 막는 기능을 제공합니다. 예를 들어, ‘Wordfence Security’나 ‘iThemes Security’는 악의적인 요청을 감지하고 차단하는 기능을 제공합니다.
  3. .htaccess 파일 수정: 웹서버의 설정 파일인 .htaccess를 수정하여 특정 유형의 요청을 차단할 수 있습니다. 예를 들어, 다음과 같은 규칙을 추가하여 SQL 인젝션을 시도하는 쿼리 문자열을 포함한 요청을 차단할 수 있습니다

이 규칙은 일반적인 SQL 인젝션 패턴을 포함한 요청을 찾아내서 차단합니다.

RewriteEngine On

이 라인은 URL 재작성 엔진을 활성화합니다. Apache 웹 서버는 .htaccess 파일에서 URL 재작성 규칙을 적용하기 위해 RewriteEngine을 사용합니다. 이 설정이 켜져 있어야 나머지 재작성 규칙이 작동합니다.

RewriteCond %{QUERY_STRING} (%27)|(‘)|(–)|(%23)|(#)

이 라인은 조건을 설정하는 것으로, 특정 조건이 만족될 때만 아래의 RewriteRule이 적용됩니다. 여기서 %{QUERY_STRING}은 요청된 URL의 쿼리 문자열을 나타냅니다. 괄호 안의 패턴은 차단하려는 특정 문자열을 포함하는지 확인합니다.

  • (\%27): %27은 URL 인코딩된 아포스트로피(‘)입니다. 이를 포함하는 쿼리 문자열을 차단합니다.
  • (\'): 직접 입력된 아포스트로피(‘)를 포함하는 쿼리 문자열을 차단합니다.
  • (\-\-): SQL 주석 시작 문자열 --를 포함하는 쿼리 문자열을 차단합니다.
  • (\%23): %23은 URL 인코딩된 샵(#) 기호입니다. 이를 포함하는 쿼리 문자열을 차단합니다.
  • (#): 직접 입력된 샵(#) 기호를 포함하는 쿼리 문자열을 차단합니다.

이 패턴들은 SQL 인젝션 공격에서 자주 사용되는 문자들을 포함하고 있습니다.

RewriteRule .* – [F]

이 라인은 조건이 만족될 때 적용되는 규칙을 정의합니다.

  • .*: 모든 요청을 의미합니다.
  • -: 재작성할 URL이 없음을 나타냅니다. 즉, URL을 변경하지 않습니다.
  • [F]: Forbidden을 의미합니다. 조건이 만족되면 서버는 403 Forbidden 상태 코드를 반환하고 요청을 차단합니다.

종합 설명

.htaccess 설정은 다음과 같은 요청을 차단합니다:

  • URL 쿼리 문자열에 URL 인코딩된 아포스트로피(%27)가 포함된 경우
  • URL 쿼리 문자열에 직접 입력된 아포스트로피(')가 포함된 경우
  • URL 쿼리 문자열에 SQL 주석 시작 문자열(--)이 포함된 경우
  • URL 쿼리 문자열에 URL 인코딩된 샵 기호(%23)가 포함된 경우
  • URL 쿼리 문자열에 직접 입력된 샵 기호(#)가 포함된 경우

이를 통해 SQL 인젝션 공격을 시도하는 악의적인 요청을 차단할 수 있습니다. .htaccess 파일을 수정한 후, 웹 서버를 다시 시작하거나 구성을 새로 고쳐야 할 수 있습니다. 이를 통해 변경 사항이 적용됩니다.

위의 .htaccess 파일 내용은 특정 사이트에서만 이미지 파일을 참조할 수 있도록 제한하는 설정입니다. 각 라인의 의미를 자세히 설명하겠습니다.

RewriteEngine on

이 라인은 URL 재작성 엔진을 활성화합니다. Apache 웹 서버는 .htaccess 파일에서 URL 재작성 규칙을 적용하기 위해 RewriteEngine을 사용합니다. 이 설정이 켜져 있어야 나머지 재작성 규칙이 작동합니다.

RewriteCond %{HTTP_REFERER} !^$

이 라인은 HTTP_REFERER 헤더가 비어 있지 않을 때만 조건을 만족하도록 합니다. HTTP_REFERER는 사용자가 이전에 방문한 페이지의 URL을 나타냅니다. !^$는 빈 문자열이 아닌 경우를 의미합니다.

RewriteCond %{HTTP_REFERER} !^https://www.auctionpro.co.kr [NC]

이 라인은 HTTP_REFERER 헤더가 https://www.auctionpro.co.kr로 시작하지 않는 경우 조건을 만족하게 합니다. [NC]는 대소문자를 구분하지 않도록 합니다 (No Case-sensitive).

RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google.com [NC]

이 라인은 HTTP_REFERER 헤더가 http://www.google.com, https://www.google.com, http://google.com, 또는 https://google.com로 시작하지 않는 경우 조건을 만족하게 합니다. http(s)?http 또는 https를 의미하며, (www\.)?www.가 있을 수도 있고 없을 수도 있음을 의미합니다. [NC]는 대소문자를 구분하지 않도록 합니다.

RewriteRule .(jpg|jpeg|png|gif)$ – [NC,F,L]

이 라인은 조건이 만족될 때 적용되는 규칙을 정의합니다.

  • \.(jpg|jpeg|png|gif)$: URL이 .jpg, .jpeg, .png, 또는 .gif로 끝나는 경우를 의미합니다. 이는 이미지 파일을 대상으로 합니다.
  • : 재작성할 URL이 없음을 나타냅니다. 즉, URL을 변경하지 않습니다.
  • [NC]: 대소문자를 구분하지 않도록 합니다 (No Case-sensitive).
  • [F]: Forbidden을 의미합니다. 조건이 만족되면 서버는 403 Forbidden 상태 코드를 반환하고 요청을 차단합니다.
  • [L]: 이 규칙이 마지막 규칙임을 나타냅니다. 이 규칙이 적용되면 더 이상의 재작성 규칙을 적용하지 않습니다.

종합 설명

.htaccess 설정은 이미지 파일 (.jpg, .jpeg, .png, .gif)에 대한 요청을 차단합니다. 다만, 다음 조건에 해당하는 경우는 예외입니다:

  • HTTP_REFERER 헤더가 비어 있는 경우 (직접 URL을 입력하거나 북마크에서 접근하는 경우)
  • HTTP_REFERER 헤더가 https://www.auctionpro.co.kr로 시작하는 경우
  • HTTP_REFERER 헤더가 http(s)://(www.)?google.com로 시작하는 경우

이를 통해 이미지 파일이 특정 사이트에서만 참조될 수 있도록 제한하여 무단 링크를 방지할 수 있습니다. .htaccess 파일을 수정한 후, 웹 서버를 다시 시작하거나 구성을 새로 고쳐야 할 수 있습니다. 이를 통해 변경 사항이 적용됩니다.

4o

IIS 에서도 작동하게 하는 방법ChatGPT

IIS(Internet Information Services)에서 위와 같은 리퍼러 기반 이미지 차단 규칙을 설정하려면 URL Rewrite 모듈을 사용해야 합니다. 이 모듈을 사용하면 웹 서버에 대한 URL 재작성 규칙을 설정할 수 있습니다. 다음은 IIS에서 유사한 기능을 설정하는 방법입니다.

1. URL Rewrite 모듈 설치

IIS에 URL Rewrite 모듈이 설치되어 있어야 합니다. 설치되어 있지 않다면 Microsoft의 공식 사이트를 통해 다운로드하고 설치할 수 있습니다.

2. web.config 파일 수정

사이트의 루트 디렉토리에 있는 web.config 파일에 다음 내용을 추가합니다.

설명

  • <match url=".*\.(jpg|jpeg|png|gif)$" ignoreCase="true" />: URL이 .jpg, .jpeg, .png, 또는 .gif로 끝나는 경우를 매칭합니다.
  • <conditions logicalGrouping="MatchAll" trackAllCaptures="false">: 모든 조건이 만족해야만 규칙이 적용되도록 설정합니다.
    • <add input="{HTTP_REFERER}" pattern="^$" negate="true" />: HTTP_REFERER가 비어 있지 않은 경우에만 조건을 만족합니다.
    • <add input="{HTTP_REFERER}" pattern="^https://www.auctionpro.co.kr" negate="true" ignoreCase="true" />: HTTP_REFERER가 https://www.auctionpro.co.kr로 시작하지 않는 경우에만 조건을 만족합니다.
    • <add input="{HTTP_REFERER}" pattern="^http(s)?://(www\.)?google.com" negate="true" ignoreCase="true" />: HTTP_REFERER가 http(s)://(www.)?google.com으로 시작하지 않는 경우에만 조건을 만족합니다.
  • <action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Hotlinking forbidden" />: 조건이 만족되면 403 Forbidden 응답을 반환합니다.

3. IIS 재시작

web.config 파일을 수정한 후 IIS를 재시작하거나 웹사이트를 재시작하여 변경 사항이 적용되도록 합니다.

이 설정을 통해 특정 리퍼러에서만 이미지를 참조할 수 있게 되어, 다른 사이트에서 무단으로 이미지를 링크하는 것을 방지할 수 있습니다.

RewriteEngine On RewriteCond %{QUERY_STRING} (%27)|(‘)|(–)|(%23)|(#) RewriteRule .* – [F]

IIS 에서 세팅ChatGPT

IIS(Internet Information Services)에서 위와 같은 URL 재작성 규칙을 설정하려면 URL Rewrite 모듈을 사용해야 합니다. 이 모듈을 통해 Apache의 .htaccess 파일에서 설정한 것과 유사한 규칙을 만들 수 있습니다. 다음은 IIS에서 쿼리 문자열에 특정 패턴을 포함하는 요청을 차단하는 방법입니다.

1. URL Rewrite 모듈 설치

IIS에 URL Rewrite 모듈이 설치되어 있어야 합니다. 설치되어 있지 않다면 Microsoft의 공식 사이트에서 다운로드하고 설치할 수 있습니다.

2. web.config 파일 수정

사이트의 루트 디렉토리에 있는 web.config 파일에 다음 내용을 추가합니다.

설명

  • <match url=".*" />: 모든 URL을 매칭합니다.
  • <conditions logicalGrouping="MatchAny" trackAllCaptures="false">: 하나라도 조건이 만족되면 규칙이 적용되도록 설정합니다.
    • <add input="{QUERY_STRING}" pattern="%27" />: 쿼리 문자열에 %27(URL 인코딩된 아포스트로피)이 포함된 경우.
    • <add input="{QUERY_STRING}" pattern="\'" />: 쿼리 문자열에 아포스트로피(')가 포함된 경우.
    • <add input="{QUERY_STRING}" pattern="\-\-" />: 쿼리 문자열에 SQL 주석 시작 문자열(--)이 포함된 경우.
    • <add input="{QUERY_STRING}" pattern="%23" />: 쿼리 문자열에 %23(URL 인코딩된 샵 기호)이 포함된 경우.
    • <add input="{QUERY_STRING}" pattern="#" />: 쿼리 문자열에 샵 기호(#)가 포함된 경우.
  • <action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />: 조건이 만족되면 403 Forbidden 응답을 반환합니다.

3. IIS 재시작

web.config 파일을 수정한 후 IIS를 재시작하거나 웹사이트를 재시작하여 변경 사항이 적용되도록 합니다.

이 설정을 통해 쿼리 문자열에 특정 패턴이 포함된 요청을 차단할 수 있으며, 이는 SQL 인젝션 공격을 방지하는 데 도움이 됩니다.

%23 %27 문자는?ChatGPT

IIS에서 %23(URL 인코딩된 #) 및 %27(URL 인코딩된 ‘)와 같은 URL 인코딩된 문자를 포함한 쿼리 문자열을 차단하는 방법을 web.config 파일을 통해 설정할 수 있습니다. 이를 위해 URL Rewrite 모듈을 사용하여 특정 패턴을 감지하고 해당 요청을 차단합니다.

다음은 이를 구현하기 위한 web.config 파일의 설정 예시입니다:

설명

  • <match url=".*" />: 모든 URL을 매칭합니다.
  • <conditions logicalGrouping="MatchAny" trackAllCaptures="false">: 하나라도 조건이 만족되면 규칙이 적용되도록 설정합니다.
    • <add input="{QUERY_STRING}" pattern="%2527" />: 쿼리 문자열에 이중 URL 인코딩된 %27(즉, %2527)이 포함된 경우.
    • <add input="{QUERY_STRING}" pattern="%27" />: 쿼리 문자열에 URL 인코딩된 %27(아포스트로피)이 포함된 경우.
    • <add input="{QUERY_STRING}" pattern="\'" />: 쿼리 문자열에 아포스트로피(')가 포함된 경우.
    • <add input="{QUERY_STRING}" pattern="\-\-" />: 쿼리 문자열에 SQL 주석 시작 문자열(--)이 포함된 경우.
    • <add input="{QUERY_STRING}" pattern="%2523" />: 쿼리 문자열에 이중 URL 인코딩된 %23(즉, %2523)이 포함된 경우.
    • <add input="{QUERY_STRING}" pattern="%23" />: 쿼리 문자열에 URL 인코딩된 %23(샵 기호)이 포함된 경우.
    • <add input="{QUERY_STRING}" pattern="#" />: 쿼리 문자열에 샵 기호(#)가 포함된 경우.
  • <action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />: 조건이 만족되면 403 Forbidden 응답을 반환합니다.

이중 URL 인코딩

특정 상황에서는 %27(아포스트로피)와 %23(샵 기호)가 이중으로 인코딩된 %2527%2523으로 나타날 수 있습니다. 이는 % 문자가 다시 URL 인코딩되어 %25로 변환되었기 때문입니다. 이 경우에도 차단할 수 있도록 패턴에 이중 인코딩된 값을 추가했습니다.

적용 방법

  1. web.config 파일을 수정하여 위의 내용을 추가합니다.
  2. 변경 사항을 적용하기 위해 IIS를 재시작하거나 해당 웹사이트를 재시작합니다.

이 설정을 통해 쿼리 문자열에 특정 패턴이 포함된 요청을 차단하여 SQL 인젝션 공격을 방지할 수 있습니다.