웹사이트가 갑자기 숨겨진 스팸 링크에 감염되면 심각한 문제가 발생할 수 있습니다. 가벼운 경우 구글 순위가 폭락하고 트래픽이 반으로 줄며, 심각한 경우엔 ‘위험한 사이트’로 표시되어 완전히 블랙리스트에 오를 수 있습니다.
대부분의 웹마스터는 이상을 감지했을 땐 이미 황금 대처 시간을 놓친 상태이며, 페이지를 무작정 삭제하거나 서버를 종료하면 오히려 구글의 추가 페널티를 유발할 수 있습니다.
8년 경력의 실전 SEO 전문가로서, 60건 이상의 숨겨진 링크 해킹 사례를 처리해본 경험을 바탕으로 “72시간 내 손해 최소화 + 순위 빠르게 회복”이라는 표준화된 대응 절차를 정리했습니다.
숨겨진 링크가 어디에 숨어 있는지 정확하게 파악하는 것(예: Screaming Frog로 리디렉션 코드 탐지), 수동으로 제거 후 구글에 복구 증거를 제출하기(실제 재심사 템플릿 포함), 그리고 ‘신뢰 콘텐츠’를 배포해 스팸 링크의 영향을 희석시키는 것까지 — 모든 단계는 3가지 핵심 시간 포인트(24시간/3일/7일)에 맞춰야 합니다.
특별 경고: 만약 최근 7일 이내에 핵심 키워드 순위가 10위 이상 하락했고, 색인된 페이지에 “?redirect=카지노”와 같은 파라미터가 다수 보인다면, 해킹당했을 가능성이 높습니다. 즉시 1단계 점검을 시작하세요.
Table of Contens
Toggle당신의 사이트, 정말로 숨겨진 링크에 감염됐나요?
숨겨진 링크는 팝업이 뜨거나 사이트를 바로 마비시키지 않습니다 — 그래서 더 위험한 겁니다.
많은 웹마스터가 구글 순위가 50% 이상 급락한 후에야 문제를 인식하는데, 이 시점엔 이미 몇 주간 악성 링크가 존재했을 수 있고, 구글이 사이트를 ‘악성’으로 분류했을 가능성도 있습니다.
우리가 처리한 사례에 따르면, 70%의 숨겨진 링크는 이미지 디렉터리, 오래된 글, 또는 JS 스크립트 안에 숨어 있으며 육안으로는 거의 구분이 어렵습니다.
코딩 지식 없이도 가능한 가장 저렴한 점검 방법으로, 10분 안에 “기생 링크”를 찾아내는 법을 알려드릴게요.
구글 서치 콘솔: 공식 경고 확인하기
- 「보안 및 수동 조치」 → 「수동 조치」 보고서로 이동. “비자연적인 외부 링크” 또는 “해킹된 페이지” 경고가 빨간색으로 뜨면, 거의 확실히 감염된 상태입니다.
- 주의: 일부 해커는 “문제 없음” 상태를 위조할 수 있습니다 — 「보안 문제」 → 「샘플 페이지 보기」에서 표시된 URL을 수동으로 확인해 리디렉션 코드(
<meta http-equiv="refresh" content="0;url=도박사이트">
)가 있는지 체크하세요.
웹마스터 도구: 숨겨진 리디렉션 코드 스캔하기
Screaming Frog (무료 버전은 최대 500개 URL 크롤링 가능)으로 전체 사이트를 크롤링하고 다음 조건으로 필터링합니다:
- 외부 링크 수가 비정상적으로 많은 페이지 (이전 데이터와 비교해 한 페이지에 10개 이상이면 주의)
- “style=display:none” 링크 포함 여부 (
<a href="도박사이트" style="display:none">
등 코드 확인) - 외부 JS 파일 로딩 여부 (
<script src="http://의심도메인.js">
등 확인)
빠른 검증: 크롬 확장 프로그램 Link Redirect Trace를 사용해 도박 사이트로 301 리디렉션 되는지 실시간 추적하세요.
검색엔진 색인: “그림자 페이지” 추출하기
구글 검색창에 아래 내용을 입력하세요:
site:yourdomain.com intitle:카지노/로또/성인
site:yourdomain.com inurl:.php?ref=
“온라인 카지노 할인” 같은 본인이 작성하지 않은 콘텐츠가 나온다면, 이미 스팸 페이지가 생성된 겁니다.
궁극의 점검법: 서버 로그 (/var/log/apache2/access.log
)에서 “.php?
” 파라미터를 검색해 이상 접속 이력을 확인하세요. (예: 베트남, 우크라이나 IP에서 반복적으로 POST 요청)
핵심 팁: 만약 숨겨진 링크가 /wp-content/uploads/2023/
같은 이미지 디렉터리에 몰려 있다면, 해커가 미디어 업로드 취약점을 이용해 코드를 삽입한 것일 수 있습니다. 이미지 파일명에 <?php eval(
같은 이상한 형식이 포함되어 있는지 확인하세요.
숨겨진 링크 완전 제거하는 3단계
숨겨진 링크를 발견했다면, 72시간 이내가 손해를 최소화할 수 있는 황금 시간입니다. 많은 웹마스터가 성급하게 페이지를 삭제하거나 시스템을 재설치하는데, 이는 구글의 “콘텐츠 변동 이상” 감지로 2차 페널티를 초래할 수 있습니다.
60건 이상의 실전 사례를 통해 확인한 바로는, 반드시 “먼저 증거 확보 → 점진적 제거 → 동시에 복구 제출” 원칙을 지켜야 합니다.
1. 전체 백업: 중요한 데이터 실수로 삭제 방지
백업 필수 디렉터리:
/wp-content/uploads/
(이미지 파일에 PHP 코드가 숨어 있는지 확인)/wp-includes/js/
(jquery-migrate.min.js 등 파일이 변조되었는지 체크)
추천 도구:
- BT 패널(宝塔面板)로 원클릭 전체 백업 (DB 포함)
- Duplicator 플러그인으로 전체 사이트 백업 패키지 생성 (캐시 파일 자동 제외)
2. 수동으로 악성 코드 제거하기 (고위험 특징 포함)
다음 키워드를 전체 검색하세요:
eval(base64_decode('암호화 문자열'));
$k="해커 비밀번호";error_reporting(0);
<iframe src="http://악성-도메인" style="visibility: hidden;">
우선 확인해야 할 파일:
.htaccess
(예:RewriteRule ^.*$ http://도박사이트 [R=301,L]
같은 코드가 있는지 확인)header.php
/footer.php
(이상한 JS 호출이 있는지 확인, 예:document.write("
)")
보조 도구:
D쉴드(D_Safe)를 사용해 서버를 스캔하면 system()
, passthru()
같은 위험 함수가 포함된 파일을 자동으로 표시해줍니다.
3. 침입 경로 차단: 재감염 방지
- 관리자 로그인 경로 변경하기 (WordPress 대상):
WPS Hide Login 플러그인을 설치해/wp-admin/
경로를 사용자 정의 경로로 바꿔주세요 (예:/mylogin-2024/
). - 긴급 보안 패치 적용:
- 모든 플러그인을 최신 버전으로 업데이트 (취약점이 있는 플러그인은 WPScan으로 확인 가능)
- 사용하지 않는 테마 및 플러그인 삭제 (특히
wp-seo-optimize
같이 이름이 수상한 것들)
- 서버 권한 강화:bash복사
# 업로드 디렉토리에서 PHP 실행 금지 find /사이트경로/wp-content/uploads/ -type f -name "*.php" -exec rm -f {} \; chmod 644 .htaccess # 쓰기 권한 제한
핵심 팁 : 정리 후 즉시 Link Redirect Trace 플러그인으로 전체 사이트를 스캔하여 남아 있는 리디렉션 코드가 없는지 확인하세요. 암호화된 코드가 wp_posts
테이블의 post_content 필드에 저장되어 있는 경우, Adminer 도구를 사용해 아래 SQL 명령어를 실행하세요:
UPDATE wp_posts SET post_content = REPLACE(post_content, '악성 코드 조각', '');
구글 재심사 요청하기
숨겨진 링크를 제거하는 건 첫걸음일 뿐입니다. 48시간 이내에 구글에 재심사를 요청하는 것이 순위 회복의 핵심입니다.
90%의 웹사이트 운영자가 “증거 부족” 또는 “잘못된 표현” 때문에 실패하며, 심할 경우 수동 재심사가 한 번 더 진행되어 회복 기간이 3~6개월 더 길어질 수 있습니다.
바로 사용할 수 있는 영어 템플릿과 승인율을 80%까지 높여주는 ‘강력 증거 패키지’를 제공합니다.
1. Search Console에서 ‘수동 조치’ 재심사 요청
경로 안내:
“보안 및 수동 조치” → “수동 조치” → “재심사 요청” 클릭
영어 템플릿 (빨간색 부분을 상황에 맞게 교체하세요):
We have removed all spammy backlinks injected by hackers:
1. Deleted malicious codes in .htaccess and footer.php (see screenshot_1.png).
2. Blocked 142 suspicious IPs from Vietnam/Ukraine (access.log attached).
3. Fixed the vulnerability via updating plugins (e.g. Elementor from 3.6 to 3.19).
Request to revoke the manual penalty.
필수 첨부 자료:
- 정리 전후 코드 비교 스크린샷 (WinMerge로 비교)
- 서버에서 악성 IP를 차단한 로그 일부 (시간, IP, 공격 경로 포함)
- Screaming Frog 외부 링크 전체 스캔 보고서 (PDF로 내보내기)
2. ‘보안 문제’ 리포트도 함께 처리
“보안 문제” → 모든 감염된 페이지 체크 → “수정 완료로 표시” 클릭
색인 속도 올리는 팁:
URL 검사 도구 → 감염된 URL 입력 → “색인 요청” 클릭 (하루 50개까지 가능)
3. 재심사 실패 방지 꿀팁
- “We apologize” 같은 사과 표현은 피하기 (구글이 책임 회피로 해석할 수 있음). 대신 사실만 기술하세요.
- 제3자 보안 보고서 첨부 (예: Sucuri 또는 SiteCheck 스캔 결과). 사이트가 깨끗하다는 증거로 활용됩니다.
사이트 콘텐츠 지속적으로 업데이트:
재심사 요청 후 24시간 이내에 원본 글 2개 게시 (구글이 ‘적극 관리 중’ 신호로 인식함)
핵심 팁: 7일 내에 구글로부터 응답이 없다면 “검색 모양새 → 크롤링 최적화”로 가서 sitemap.xml을 제출하고, 주석란에 다음 문구를 넣으세요: “Malware cleaned up, please recrawl critical pages like /contact-us/ and /blog/”.
수동 조치 경고가 해제되지 않았다면, 28일 후 동일한 증거로 다시 제출하세요 (스팸 필터 발동 방지용).
저비용 보안 설정 체크리스트
“보안은 돈이 많이 든다”는 건 오해입니다 — 80%의 해킹은 업데이트되지 않은 플러그인, 약한 비밀번호, 기본 관리자 경로 같은 기초적인 허점 때문에 발생합니다.
우리는 연간 5만 원도 안 되는 예산으로 고객 사이트를 2만 건 넘는 공격에서 보호한 적도 있습니다.
기본적인 서버 조작만 할 줄 알아도, 1시간 안에 사이트 전체를 안전하게 만들 수 있어요.
1. 기본 보안 3종 세트 (무료)
실시간 파일 변경 감시:
- BT패널의 “파일 변조 방지” 기능 사용 (무료).
wp-config.php
,.htaccess
같은 핵심 파일을 잠그고, 변경 시 문자 알림 전송.
무차별 로그인 공격 차단:
- Wordfence (무료버전) 설치 → “실시간 트래픽 감시” 켜기. 로그인 5회 이상 실패한 IP는 자동 차단.
자동 클라우드 백업:
- UpdraftPlus로 Google Drive에 매일 백업 설정 (7일치 버전 유지). 해킹 시 바로 깨끗한 버전으로 롤백 가능.
2. 꼭 변경해야 하는 서버 보안 설정
위험한 PHP 함수 비활성화:
php.ini
파일을 열고 disable_functions
항목에 다음 내용을 추가하세요:
system,exec,passthru,shell_exec,proc_open,curl_multi_exec
업로드 디렉터리 권한 제한:
# /uploads/ 경로에서 PHP 실행 차단
find /사이트경로/wp-content/uploads/ -type f -name "*.php" -delete
chmod -R 755 /사이트경로/wp-content/uploads/
서버 정보 숨기기:
.htaccess
파일 맨 위에 다음을 추가하세요:
ServerSignature Off
Header unset X-Powered-By
3. 방화벽 규칙 (월 비용 ≤ $20)
Cloudflare 무료 플랜 설정:
- 규칙 1:
/wp-admin/
또는xmlrpc.php
포함 요청에 대해 (화이트리스트 IP 제외) 챌린지 적용 - 규칙 2: User-Agent에
sqlmap
또는nmap
이 포함된 요청 차단
위험 국가 IP 차단:
BT 패널의 “방화벽”에서 다음 차단 규칙 추가:
베트남: 14.224.0.0/11
러시아: 46.161.0.0/18
우크라이나: 37.52.0.0/14
중요 팁: 분기마다 WPScan으로 취약점 스캔을 한 번 실행하세요 (명령어: wpscan --url 당신의도메인 --api-token 당신의토큰
)
중간 이상 위험도로 표시된 플러그인을 우선적으로 처리하세요.
Nginx 서버를 사용 중이라면 반드시 아래 설정을 추가하세요:
location ~* ^/(uploads|wp-content)/.*\.(php|php5|phtml)$ {
deny all;
}
(이미지 파일을 통한 PHP 코드 실행을 완전히 차단)
“원클릭 보안 플러그인”에 의존하지 마세요 — 저희가 인기 보안 플러그인 13개를 분석해봤는데, 그중 9개가 과도한 권한 부여나 파일 삭제 같은 문제를 가지고 있었어요.
.htaccess 규칙이나 서버 권한 설정처럼 직접 방어 구성을 해야 확실하게 통제할 수 있습니다.