관리 메뉴

웹개발자의 기지개

[PHP] 초간단 캡차, 스팸방지 기능 만들기1 본문

PHP

[PHP] 초간단 캡차, 스팸방지 기능 만들기1

http://portfolio.wonpaper.net 2024. 3. 26. 23:45

스팸글의 매크로 등록을 위하여 스팸방지 캡차 기능을 간단히 만들어본다.

 

 

우선 CSRF 방지하는 기능도 추가로 같이 이용하면 더욱 좋겠다.

https://wonpaper.tistory.com/417

 

[PHP] CSRF 공격방어 작업하기

PHP 상으로 CSRF (cross-site request forgery) 공격을 막는 작업을 해보자. 우선 작업을 할 이전페이지단에서, token 이라는 특정랜덤값이 든 세션 변수를 하나 할당한다. 그리고 해당 posting 되는 실제 페이

wonpaper.tistory.com

 

 

압축을 풀면 위의 3가지 파일을 같은 디렉토리에 배치한다.

그리고, 다음 소스로 스팸방지 기능을 처리한다. 

 

 

[ signup.php ]

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<html>
<head>
<title>CHSignup</title>
</head>
<body onload="document.form.imagecode.focus()">
<h2>CHSignup</h2>
<?php
if (isset($_POST['imagecode'])
     && strlen($_POST['imagecode']) == 5
     && isset($_SESSION['text'])
     && strtolower($_POST['imagecode']) == $_SESSION['text'])
{
    echo '<b><font color="green">코드가 정확하게 맞았습니다. :-)</font></b>';
}
elseif (isset($_POST['imagecode']))
{
    echo '<b><font color="red">코드가 일치하지 않습니다. :-(</font></b>';
}
unset ($_SESSION['text']);
?>
 
<form name="form" method="post" action="<?=$_SERVER['PHP_SELF']?>?<?=SID?>">
<table>
    <tr>
        <td colspan=2>이미지에 보이는 글자를 입력하여 주십시오.</td>
    </tr>
    <tr>
        <td><img src="chsignup.php?<?=SID?>"></td>
        <td><input type="text" name="imagecode"></td>
    </tr>
    <tr>
        <td colspan=2><input type="submit" value="확인"></td>
    </tr>
</table>
</form>
</body>
</html>
 
cs

 

 

29라인의 imagecode  input 박스값으로 생성된 스팸방지 코드를 동일하게 치고, submit 하면 

8 ~ 12 라인사이의 값은 넘어간 다음페이지의 변수값들을 받아서 스팸코드가 제대로 맞는지 체킹한다.

내부적으로 세션처리값으로 비교한다.

 

 

 

소스 또한 같이 올리도록 하겠다.

chsignup.tar.gz
0.03MB

 

 

 

 

 

 

 

 

 

 

Comments