테스트 사이트 - 개발 중인 베타 버전입니다

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

· 9년 전 · 3292 · 17

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

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

그누보드 스팸 보안시스템 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 개발자입니다.

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

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

댓글 작성

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

로그인하기

댓글 17개

9년 전
별말씀을요 ^^ 감사합니다.
그런데 스팸을 로봇이 쓰나요?
9년 전
기본적으로 자동으로 등록되는 시스템은 다음과 같습니다.
http://programbay.tistory.com/287 (꼭 이것은 아닙니다.)

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

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

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

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

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

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

게시글 목록

번호 제목
137
128
125
108
107
106
94
76
75
74
73
72
69
68
67
66
65
61
52
50
48
47
44
43
41
40
39
오픈소스 Onsen.io
31
30
29