2026, 새로운 도약을 시작합니다.

게시판 스팸글 단어 필터링해도 뚫립니다.

2일 전 조회 48
그누보드5 사용중입니다.



현재 게시판에 스팸글이 하루에 30개씩 올라와서 고민중입니다.



환경설정->게시판 기본설정->단어필터링에 금지어를 설정해두었습니다.



하지만, 제가 게시판 글에 금지어를 넣으면 작성하면



새창에서 스팸글입니다라고 뜨는데,



스팸글은 어떻게해서 계속해서 올리는지 모르겠습니다.



또 게시판 기능 설정에서 최대 글수 제한을 1500으로 해놓았는데도 이것도 계속 무시하고 2000~3000자 이상 계속 올리고 있습니다.



어떻게 하면 스팸글 안 뚫릴수 있을까요?



미리 감사드립니다.

답변 3개

common.php 에서 post, get 값에서 금칙어들 거르시는게 나을것으로 보입니다!

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

하지만, 제가 게시판 글에 금지어를 넣으면 작성하면
새창에서 스팸글입니다라고 뜨는데,
== 이 부분이 문제 입니다.
아마도 form 전송전 js 등을 통하여 필터링 하시는것 같은데
update 바로 전인 update_head.skin.php 라던가 update_tail.skin.php 에서 
선처리 또는 후처리 하셔야 합니다.
로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

답글 감사드립니다.
(1) 제 게시판 하위 디렉토리에 basic폴더와 gallery폴더가 있는데 두군데 다 update_head.skin.php라는 파일은 없는데 만들어야 할까요?
(2) 혹시 글 작성시간이 3초 이내인 경우, 스팸글로 처리하려고 할 때, write.skin.php 파일에 히든필드

<input type="hidden" name="w_time" value="<?php echo time() ?>">

를 추가 후에 같은폴더에 update_head.skin.php라는 파일을 하나 만들어 이 파일에

<?php
if (!defined("_GNUBOARD_")) exit;

if (!$w_time)
$w_time = time();

if (time() - $w_time < 20)
alert('비정상적인 접근입니다.');
?>

이 코드만 넣어주면 될까요?

감사합니다.
답글 감사드립니다.
(1) board 하위 디렉토리에 basic폴더와 gallery폴더가 있는데 두군데 다 update_head.skin.php라는 파일이 없는데 새로 만들어야 할까요?
(2) 혹시 게시판 글 작성시간이 3초 이내인 경우, 스팸글로 처리하려고 할 때 write.skin.php 파일에 히든필드

<input type="hidden" name="w_time" value="<?php echo time() ?>">

를 추가 후에 같은 폴더에 update_head.skin.php라는 파일을 새로 하나 만들어 이 파일에

<?php
if (!defined("_GNUBOARD_")) exit;

if (!$w_time)
$w_time = time();

if (time() - $w_time < 20)
alert('비정상적인 접근입니다.');
?>

이 코드만 넣어주면 될까요?

감사합니다.
그누보드5 의 글쓰기는 스킨단 이전에 /bbs/write.php 에서 이루어집니다.
해당 파일내의 코드를 보면

include_once(G5_PATH.'/head.sub.php');
@include_once ($board_skin_path.'/write.head.skin.php');
include_once('./board_head.php');

$action_url = https_url(G5_BBS_DIR)."/write_update.php";

echo '<!-- skin : '.(G5_IS_MOBILE ? $board['bo_mobile_skin'] : $board['bo_skin']).' -->';
include_once ($board_skin_path.'/write.skin.php');

include_once('./board_tail.php');
@include_once ($board_skin_path.'/write.tail.skin.php');
include_once(G5_PATH.'/tail.sub.php');

이렇게 되어있는데요

$action_url = https_url(G5_BBS_DIR)."/write_update.php";
업데이트가 이루어지기 전에

@include_once ($board_skin_path.'/write.head.skin.php');
이 write.head.skin.php 에서 먼저 선행 작동을 합니다.

물론 변수는 그대로 달고 갑니다 $wr_1 이런식으로 말이죠.

<input type="hidden" name="wr_1" value="<?php echo time() ?>">

여분필드 wr_1 데이터가 넘어왔을때

해당 스킨에 write.head.skin.php 파일을 하나 만드시고

if (time() - $w_1 < 20) {
alert('글 작성시간을 20초 이상으로 작성해주세요.');
}

이렇게 할수 있는거죠.
답글 감사드립니다 ^^

<input type="hidden" name="wr_1" value="<?php echo time() ?>">

이거는 skin폴더 내에 있는 write.skin.php 여기에 넣어야 하나요 아니면 말씀해주신 /bbs/write.php파일에 넣어야 할까요?

그리고 name="wr_1"은 꼭 name="w_time" 이렇게 하면 안될까요?

감사합니다

댓글을 작성하려면 로그인이 필요합니다.

구글 리캡챠 적용해보시고, 그누보드 업데이트 하세요.
그래도 안 되면 아래 팁들 적용해 보세요.
https://homzzang.com/b/free-4526
로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고