그누보드 스팸 보안시스템 GNU SM MaGa Ver.01 > 오픈소스

오픈소스

그누보드 스팸 보안시스템 GNU SM MaGa Ver.01 정보

오픈소스 그누보드 스팸 보안시스템 GNU SM MaGa Ver.01

첨부파일

spam.php (1.8K) 51회 다운로드 2016-01-09 02:08:33

본문

안녕하세요. 전 흑횽입니다. ^^

요번에 그누보드 스팸글 때문에 고민하시는 분들을 위해서.

그누보드 스팸 보안시스템 GNU SM MaGa Ver.01 플러그인 오픈소스를 개발해 봤습니다. 

 

소스는 다운받아서 extends 폴더에 업로드하시면 됩니다. 끝~~

 

소스설명

 

$key = "보안을위해서 난 락을 건다. 스팸이여 안녕!!"; // 키는 여러분들이 원하는데로 넣어주세요. 

[설명] 키값입니다. 사실 의미는 없습니다. 그냥 넣고 싶은 것 넣어주세요.

  

$parameterHash = sql_password($key); 

[설명] 파라미터 해쉬에 sql_password 메소드의 값을 대입시킵니다.

sql_password 메소드는 $key의 문자열을 해쉬코드화 시킵니다. 

키값이 별의미 없다는 것은 여기에 있습니다. sql_password 메소드는 새로고침시 값이 변경이 됩니다.

** 2016. 01.10 추가내용

sql_password 메소드는 키값에 공백이 있을 때, 변경이 됩니다. 

이 이야기를 뻈네염 ^^

 

$parameterHash = str_replace("*","",$parameterHash); 

[설명] 생성된 파라미터해쉬 변수의 값 중 '*'을 지웁니다.

이유는 파라미터 이름으로 사용하기 위해서는 특수문자는 안되거든요 ^^

 

$valueHash = md5(microtime()); 

[설명] 이 값은 차후, 더 확장할 때 사용할려고 만들었는데. 굳이 쓸 필요성이 있을 지 모르겠네요. 

 

$searchName = "write.php";     

[설명] 검색할 파일명을 대입시킵니다. 

 

if(strpos($full_URI, $searchName) !== false) {}

[설명] "write.php" 문자열이 있는지 체크합니다. true일 때 실행합니다.

 

session_start();

 

$_SESSION[$parameterHash] = $valueHash;

[설명] 이 부분이 젤 중요하겠죠.

세션을 시작시킵니다. 

테러를 당하는 이유는 파라미터 이름이 고정이기 때문에 발생하겠죠.

오픈소스 같은 경우엔, 오픈되어 있으니.. 더 심각할 수 밖에 없습니다.

그러기 위해서는 파라미터 이름을 유동으로 바꾸는 것이 1차 보안입니다.

그래서, 버전.01에서는 파라미터 이름만 해쉬화시킨 이유이죠.

글쓰기 버튼을 눌렀을 때, 세션이 생성됩니다.

 

$searchName = "write_update.php";    

if(strpos($full_URI, $searchName) !== false) {  }

[설명] "write_update.php" 문자열 존재시 실행 

 

if($_SESSION[$parameterHash]){

$_SESSION[$parameterHash] = "";

unset($_SESSION[$parameterHash]);

}else{

alert('잘못된 접급입니다.');

 

}

[설명]  $_SESSION[$parameterHash]의 값이 존재하면 실행됩니다.

세션을 소멸을 시킵니다. 세션 값부터 없애고, 힙영역의 공간도 지웁니다.

 

여기까지 ^^ 

php는 3년 3개월 경력의 php 개발자입니다.

부족하지만 열심히 하는 어린 "양"으로 생각해주시고, 읽어주셨으면 합니다. 

그럼 즐거운 주말되세요 ^^

추천
0

댓글 17개

스팸을 다는 로직을 몰라서 개발을 어떻게 해야할지 모르겠네요^^  사용자입장에서 볼때 글가독이 너무 어려워 불편하거든요.. 오타없이 쉽게 쓸수있게하면 스팸방지가 안될까요? 몰라서 여쭙습니다~
지금 소스는 그누보드5 나 그누보드4 에서나 그누보드 원본 소스에 폴더명 extend 에 그냥 파일을 업로드하시면 됩니다.

제가 오타가 좀 많아서 죄송합니다. (__)
ㅎㅎ 그런뜻이 아닌데요 ㅎㅎ
로봇이 스팸을 달때 어떤원리로 다는지를 몰라서 개발을 하고 싶어도 방향을 못잡겠다는 말씀요 ^^
아마 이미지의 숫자나 글자까지도 해석할수 있으니 자동등록방지코드도 뚫는것 같은데.. 그렇다고 가독이 어렵게 구현하면 사용자도 못알아 보는 글이돼서 불편하다는거죠..
쉽게 퀴즈로 1+1은 몇이냐? 또는 일이삼사를 숫자로 쓰시오 이렇게 구현해도 되는것 아닌지?
스팸을 다는 로직을 알면 개발도 그렇게 대응하면 될것 같은데.. 몰라서 여쭤본 거에요..
저같은 경우엔 단어를 한글로 사용하고 있는데 아직 뚫리지는 않았지만 유저가 많지는 않다보니.. 검증이 안되네요..
아...원리

제가 잘못이해했나보군요.
사용자가 많은 곳이라고 스팸이 많은 것은 아닙니다.
어떤 방식으로 뚫리는지 원리는 저도 잘 몰라요.
다만, 인자방식인것은 확실한것 같습니다.

WIN APP로 만들어서, 무작위로 돌리는 방식으로 진행되는 것 같습니다.
일단, 제가 관리하는 업체들도 문제점을 제시해서, 하나 만들어 봤습니다.

만약 원리까지 알게되면, 제가 다 기록하겠습니다. 감사합니다.
그런가요? 제가 알기로는 바로 업데이트로 이동하는것으로 알고 있습니다.
제가 잘 못 알고 있을 수도 있음으로, 확답은 아닙니다.
사용 후 문제점이 있다면 알려주시면, 버전 업데이트 시 유용할 것 같습니다.
감사합니다.
기본적으로 자동으로 등록되는 시스템은 다음과 같습니다.
http://programbay.tistory.com/287 (꼭 이것은 아닙니다.)

즉 윈APP 에서 글쓰기 폼이 있는것이죠.
그런데. write 페이지를 어찌 읽나요?
바로 송신하는데... 제가 잘 못 안것인가요?
게시물 등록기도 일종의 봇이고, 알려주신 링크의 프로그램도 글등록 URL이 write.php로 되어있네요. 봇이 그 링크(글쓰기 폼)를 먼저 열고 입력한 제목과 내용을 삽입한 뒤, 전송하는 구조로 보입니다. 즉, 본문글의 방어법으로는 막을 수 없는 프로그램일 겁니다.
혹시 해당 프로그램으로 테스트해보셨나요?
"막을 수 있다. 없다"의 테스트는 저도 모릅니다.
단, 제가 관리하는 사이트에는 이 방법으로 사용하고 있습니다.
현재까지는 문제없이 잘 되고 있습니다.

또한, 이러한 방법은 어떨까?
하는 생각에서 나온 소스입니다.
꼭 되야 하는것은 아니죠.
서로 다른 방법을 제시해주고, 그것을 토론하는 것이 미래를 위한 준비라 생각합니다.

넓은 지식을 서로 공유해주세요. 감사합니다.
좀 쉽게 이해를 돕자면,

update.php 파일에는 insert 쿼리가 있습니다.
인자를 받아서 처리해야 되는 웹구조상, 테러를 한다면... 굳이 write 페이지를 읽을 필요성이 없다는것이죠. 만약 write 페이지를 읽어서 처리할려면, 두번고생해야 하는데...
음.. 테러하시는 분들이 굳이 시간 뻇기고 할까 생각합니다.

그리고 로봇은 긁어가는 것을 로봇으로 알고 있습니다.
로봇이 글을 쓰지는 않는것이죠.

제가 알고 있는게 틀린지 알고 싶습니다.
그래야 업그레이드시 좀 더 좋은 결과물을 얻고 싶습니다.
많은 지도부탁드립니다. 감사합니다.
원리야 뭐가 됐든지 간에.. 보통 스팸로봇이라고 하는것 같습니다 ^^
스팸로봇 검색로봇.. 휴먼이 직접하는건 아니니..
스패머들은 뚫어야 한다면 굳이 시간을 뺏어서 투자를 할것 같은데요 ㅎㅎ
스팸로봇으로 검색했더니 안털리는건 대상이 아니어서일 뿐이지 시간문제라네요..
맞는 말인지 모르겠지만 ㅎㅎ
전체 75 |RSS
오픈소스 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT