Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로젝트
- 화학물질안전원
- Los
- suninatas
- 화학물질불법유통온라인감시단
- 국정원
- 파이썬
- 화학물질
- 연구모임
- PHP
- UKPT level
- codeup
- 국가기록원
- MITRE ATT&CK
- Service
- 경기팀
- 여행
- 12기
- 웹 해킹 입문
- 기타정보
- nurisec
- 도구모음
- 국가정보원
- 정보보안
- UKPT
- 대외활동
- 불법유통
- HTML
- webhacking
- 불법유통근절
Archives
- Today
- Total
agencies
[프로젝트] 홈페이지 구축 (로그인 설정) v0.8 본문
소스코드
index.php
<?php
include "../../nav.html";
?>
<section>
<div class="s1">
<p class="top">소식ㆍ정보 > 정보게시판</p>
<p class="name">정보게시판</p>
<div style="text-align:center;padding-top:250px;">
<form action="login.php" method="post">
<label><h3>ID : <input type="text" name="username" required style="height:30px;padding-left:5px;"></h3></label><br>
<label><h3 style="margin-left:-10px;">PW : <input type="password" name="password" required style="height:30px;padding-left:5px;"></h3></label><br>
<input type="submit" value="Login" style="background-color:white;padding:15px;">
</form>
</div>
</div>
</section>
<style>
/* section 1 */
.s1{width:1050px; height:600px;background-color:white; margin:0 auto;}
.top{text-align:center; padding:50px; z-index:0; position:relative; color:gray; font-size:13px;}
.name{text-align:center; font-size:40px; font-weight:bold; color:#0351c5;}
</style>
login.php
<?php
$connect = mysqli_connect("localhost", "root", "apmsetup", "board");
$table = "create table if not exists info_board(
id int auto_increment primary key,
user varchar(20) not null,
title varchar(30) not null,
comment text not null,
date date)";
$table2 = "create table if not exists user(
id int auto_increment primary key,
user varchar(20),
pass varchar(20),
date date)";
if ($connect){
mysqli_query($connect, $table);
mysqli_query($connect, $table2);
}
$user = $_POST['username'];
$pass = $_POST['password'];
$date = date("Y-m-d");
if(!preg_match('/^[a-zA-Z0-9]+$/', $user))
{
echo"<script>alert('아이디는 알파벳과 숫자만 입력이 가능합니다.');history.back();</script>";
exit;
}
if($user !="" && $pass !="")
{
$sql = "select * from user where user='$user'";
$r = $connect->query($sql);
if($r->num_rows>0)
{
$exists = "select * from user where user='$user' and pass='$pass'";
$res = $connect->query($exists);
if($res->num_rows>0)
{
echo "로그인 성공";
}
else{
echo "<script>alert('입력한 비밀번호가 다릅니다');history.back()</script>";}
}
else{
$sql = "insert into user (user,pass,date) values('$user','$pass','$date')";
mysqli_query($connect, $sql);
echo "<script>alert('$user 로 새로운 계정이 생성되었습니다.');location.href='index.php';</script>";
}
}
?>
1. info_board 테이블이 있는지 확인 후 없다면 생성
2. user 테이블이 있는지 확인 후 없다면 생성
정상적으로 생성된 것을 확인할 수 있었습니다.
사용자 아이디에 정규표현식을 사용하여 알파벳과 숫자만 입력이 가능하도록 설정합니다.
^ : 문자열의 시작
+ : 앞의 패턴이 하나 이상 반복되어야 함
$ : 문자열의 끝
- 참고로 중복이 되어 보여지는 계정들은 테스트를 진행하면서, 이상한 동작이 되지 않도록
패치하였기에 ... 이미 저장된 정보들만 보여지게 됩니다.
* user가 있다면? 패스워드도 일치하는지 확인 후 로그인 성공 여부 판단
* 만약 user가 있는데 패스워드가 틀린다면 비밀번호가 틀렸습니다 메시지 출력
* 만약 입력한 user가 없다면 입력한 user와 pass로 계정 생성
* 입력한 user부분에 공백이나 특수문자가 들어간다면 계정 생성 불가 메시지 출력
'Ⅲ. 정보보안' 카테고리의 다른 글
LOS 문제풀이 : orge (0) | 2024.03.09 |
---|---|
[프로젝트] LOS v0.1 (0) | 2024.03.09 |
[프로젝트] 홈페이지 구축 (검색바 추가 및 XSS방어) v0.7 (0) | 2024.03.02 |
[프로젝트] 홈페이지 구축 (게시판 구축) v0.6 (0) | 2024.03.01 |
[프로젝트] 홈페이지 구축 (mysql 연동) v0.5 (0) | 2024.02.29 |