스팸 보안시스템
안녕하세요. 전 흑횽입니다. ^^
요번에 그누보드 스팸글 때문에 고민하시는 분들을 위해서.
그누보드 스팸 보안시스템 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 개발자입니다.
부족하지만 열심히 하는 어린 "양"으로 생각해주시고, 읽어주셨으면 합니다.
그럼 즐거운 주말되세요 ^^