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 라인사이의 값은 넘어간 다음페이지의 변수값들을 받아서 스팸코드가 제대로 맞는지 체킹한다.
내부적으로 세션처리값으로 비교한다.
소스 또한 같이 올리도록 하겠다.