안녕하세요? 게시물을 연속으로 수정할때 ip가 차단 되서요. ㅠ ㅜ
본문
안녕하세요?
환절기 건강 잘 챙기시기 바랍니다. 늘 건강하시구요.
다름이 아니고 그누보드5를 사용하고 빌더 그대로 사용중 입니다.
부득히 저작권 문제로 1000여개의 게시물을 수정해야 하는 상황이 발생되어 30개정도 연속으로
수정을 하니까 어느순간에 "응답없음" 이 지속되어 접속이 끊어지고 관리자 메일로 메시지가 날아 옵니다.
--------------메일로 날아온 메시지내용-----------------
XXX.XXX.XXX.XXX 아이피로 XSS 공격이 있었습니다.
관리자 권한을 탈취하려는 접근이므로 주의 하시기 바랍니다.
해당 IP는 차단하시고 의심되는 게시물이 있는지 확인하시기 바랍니다.
-------------------------------------------------------------------
짧은시간 연속으로 게시물 수정해도 이런 문제가 발생하지 않게
설정을 하는곳이 있을까요?
늦은시간 질문 읽어주셔서 감사합니다.
답변 7
급한대로
file: adm/admin.lib.php
line: 611 ~ 621
주석처리 하시면 될것 같습니다.
/*
// 관리자의 아이피, 브라우저와 다르다면 세션을 끊고 관리자에게 메일을 보낸다.
$admin_key = md5($member['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);
if (get_session('ss_mb_key') !== $admin_key) {
session_destroy();
include_once(g5_LIB_PATH.'/mailer.lib.php');
// 메일 알림
mailer($member['mb_nick'], $member['mb_email'], $member['mb_email'], 'XSS 공격 알림', $_SERVER['REMOTE_ADDR'].' 아이피로 XSS 공격이 있었습니다.\n\n관리자 권한을 탈취하려는 접근이므로 주의하시기 바랍니다.\n\n해당 아이피는 차단하시고 의심되는 게시물이 있는지 확인하시기 바랍니다.\n\n'.g5_URL, 0);
alert_close('정상적으로 로그인하여 접근하시기 바랍니다.');
}
@ksort($auth);
*/
이 부분 주척 처리 하였는데 동일하게 여러 계시물을 수정하면 IP. 차단 되면서 접속이 안됩니다.
관리자 ID; 일반 ID 동일하게 접속이 차단이 됩니다.
다른 방법이 있는지 부탁합니다.
주석 처리하기전에는 관리자 ID 로 계시물을 빨리 여러건 수정하면 갑자기 웹페이지가 응답이 없습니다. 하고 차단됩니다.
그리고
-----------------------------------------------
XXX.XXX.XXX.XXX 아이피로 XSS 공격이 있었습니다.
관리자 권한을 탈취하려는 접근이므로 주의 하시기 바랍니다.
해당 IP는 차단하시고 의심되는 게시물이 있는지 확인하시기 바랍니다.
----------------------------------------------
이런 메일이 와 있었습니다.
주석 처리후
관리자 iD 로 계시물을 여러개 빨리 수정하면 동일하게 갑자기 웹페이지 응답이 없습니다. 하고 접속이 안됩니다..
주석 처리후 메일은 안옵니다.
그리고 일반 ID도 로그인후 계시물을 연속으로 빨리수정하면 차단이 됩니다.
주석처리하기 전에도 일반 ID 로 계시물을 연속으로 빨리 수정하면 멈췄는데 그때는 메일이 안왔습니다.
웹페이지 계시글이 90프로 이상이 택스트 형식으로 되어있습니다.
웹페이지 내용중 제품구매 링크만 찾아서 제거 하는 일 입니다.
"" https://ko.aliexpress.com/item/1005003112823697.html?spm=a2g0o.tm800091275 ""
이런 택스트를 지우는 일인데 계시물을 빨리 수정하다보면 차단이 됩니다.
한번 차단이 된 IP 주소는 어떠한 방법을 써도 웹페이지에 접근이 안됩니다.
수작업으로 일일히 수정하기보다
MySQL 8.0 의 경우는
https://dev.mysql.com/doc/refman/8.0/en/regexp.html#function_regexp-replace
함수를 사용해 일괄 치환이 가능합니다.
미만 버전에서는 해당 함수가 없어서 억지로 구현을 해야 하는데
select
f1
-- ,INSTR(f1, 'https://ko.aliexpress.com') f2
-- ,SUBSTRING(f1, INSTR(f1, 'https://ko.aliexpress.com')) f3
-- ,SUBSTRING_INDEX(SUBSTRING(f1, INSTR(f1, 'https://ko.aliexpress.com')), ' ', 1) f4
,REPLACE(f1, SUBSTRING_INDEX(SUBSTRING(f1, INSTR(f1, 'https://ko.aliexpress.com')), ' ', 1), '') f5
-- REPLACE(f1, SUBSTRING_INDEX(SUBSTRING(f1, INSTR(f1, 'https://ko.aliexpress.com') f2
from (
select 'https://ko.aliexpress.com/item/1005003112823697.html?spm=a2g0o.tm800091275' f1 union all
select 'a https://ko.aliexpress.com/item/1005003112823697.html?spm=a2g0o.tm800091275 b' f1 union all
select 'sdfsfdg https://ko.naver.com/item/1005003112823697.html?spm=a2g0o.tm800091275' f1 union all
select 'sd d https://ko.aliexpress.com/item/1x05003112823697.html?spm=a2g0o.tm8x0091275 sd google.com https://ko.aliexpress.com/item/1x05003112823697.html?spm=a2g0o.t ' f1 union all
select '\nhttps://ko.aliexpress.com/item/10w5003112823697.html?spm=a2g0o.tm80w091275' f1 from dual
) tmp;
처럼 테스트 해볼 경우
f1 |f5 |
---------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
https://ko.aliexpress.com/item/1005003112823697.html?spm=a2g0o.tm800091275 | |
a https://ko.aliexpress.com/item/1005003112823697.html?spm=a2g0o.tm800091275 b |a b |
sdfsfdg https://ko.naver.com/item/1005003112823697.html?spm=a2g0o.tm800091275 |sdfsfdg https://ko.naver.com/item/1005003112823697.html?spm=a2g0o.tm800091275 |
sd d https://ko.aliexpress.com/item/1x05003112823697.html?spm=a2g0o.tm8x0091275 sd google.com https://ko.aliexpress.com/item/1x05003112823697.html?spm=a2g0o.t |sd d sd google.com https://ko.aliexpress.com/item/1x05003112823697.html?spm=a2g0o.t |
¶https://ko.aliexpress.com/item/10w5003112823697.html?spm=a2g0o.tm80w091275 |¶ |
4번째 결과 행처럼 하나 이상의 삭제할 링크가 포함될 경우
한번의 치환으로 해결이 안되는 경우가 생기게 됩니다.
이런 경우는 원하는 결과가 나올때 까지 n번 쿼리를 적용해야 하는 문제가 있습니다.
그래서 php 프로그램에서 뷰 페이지가 열릴때 자동감지 후 업데이트가 되게 하거나
실제 업데이트 하지 않고
DB > php > 뷰 직전 치환 > 뷰
로 처리하는 방법이 무난하지 않을까 싶습니다.
!-->!-->혹시 같은 아이디로
동시에 여러 곳에서 작업하시나요?