오늘 공부한 내용
<h5>오늘 공부한 내용:</h5>
<ul>
<li>
<pre>
{% set html_content %}
## 🛠️ 웹 해커의 도구 및 SNS 보안 위협 요약
---
## 1. Chapter 07: 웹 해커의 필수 도구
웹 취약점을 분석하고 공격을 수행하기 위해 해커는 다음과 같은 도구들을 활용합니다.
### A. 웹 브라우저 개발자 도구 (F12)
* **기능**: HTML/CSS 코드 수정, 네트워크 패킷 분석, 쿠키 값 확인.
* **특징**: 크롬, 엣지, 파이어폭스 등 현대적인 브라우저는 모두 강력한 개발자 도구를 내장하고 있어 별도의 도구 없이도 기본적인 취약점 분석이 가능합니다.
### B. Burp Suite (웹 프록시 도구)
웹 서버와 브라우저 사이에서 패킷을 가로채고 수정하는 가장 핵심적인 도구입니다.
* **Target**: 웹 사이트의 전체 디렉터리 구조와 HTTP 헤더 정보를 한눈에 파악.
* **Intruder**: 변숫값을 자동으로 변경하며 반복 요청을 보내는 기능 (무작위 대입 공격 등).
* **Repeater**: 특정 요청을 수정하여 반복적으로 전송하고 응답을 확인하는 기능.
### C. 웹 취약점 스캐너
자동으로 취약점을 찾아주는 도구로, 효율적인 보안 진단을 돕습니다.
* **Nikto / Sqlmap**: 특정 목적(서버 설정, SQL 인젝션)에 특화된 오픈소스 스캐너.
* **Acunetix / AppScan**: 종합적인 취약점 진단 및 상세 보고서 생성이 가능한 상용 솔루션.
---
## 2. Chapter 08: SNS 보안 위협과 대응
웹 2.0 시대의 도래로 사용자의 참여가 늘어나면서, 기술적 취약점뿐만 아니라 **사람을 대상으로 하는 사회공학적 공격**이 증가했습니다.
### 주요 SNS 보안 위협 및 대응
| 위협 유형 | 내용 설명 | 대응 방안 |
| --- | --- | --- |
| **악성 소프트웨어** | SNS 링크나 앱을 통해 웜, 랜섬웨어 유포 | 출처 불분명한 링크 클릭 금지, 최신 백신 유지 |
| **피싱 (Phishing)** | 가짜 사이트로 유도하여 개인정보 탈취 | URL 주소 확인, 개인정보 요구 시 직접 확인 |
| **이블 트윈 (Evil Twin)** | 유명인/지인을 사칭한 가짜 계정 생성 | SNS 공개 범위 설정(친구 공개 등) 및 사칭 신고 |
| **신원 도용** | 타인의 정보를 이용한 사기 행위 | 118(개인정보침해신고) 등 전문 기관 신고 |
| **사이버 폭력** | 온라인상의 지속적인 음해와 괴롭힘 | 메시지 증거 보관, 무시 및 차단, 교육 실시 |
---
<12. 23일>
(세션) 로그인 사이트를 만들자.
mkdir /var/lib/tomcat10/webapps/ROOT/session
cd /var/lib/tomcat10/webapps/ROOT/session
1. 로그인 페이지 (login.jsp)
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head><title>로그인</title></head>
<body>
<h2>로그인</h2>
<form action="loginCheck.jsp" method="post">
아이디: <input type="text" name="uname"><br>
비밀번호: <input type="password" name="pass"><br>
<input type="submit" value="로그인">
</form>
<%
String error = request.getParameter("error");
if (error != null && error.equals("1")) {
out.print("<p style='color:red'>로그인 실패</p>");
}
%>
</body>
</html>
2. 로그인 체크 (loginCheck.jsp)
<%@ page import="java.sql.*" %>
<%
// DB 연결 정보
String driver = "org.mariadb.jdbc.Driver";
String url = "jdbc:mariadb://localhost:3306/cloud_db";
String dbUser = "mydb";
String dbPass = "mydb123"; // 실제 비밀번호로 변경
// 사용자 입력:
String uname = request.getParameter("uname");
String pass = request.getParameter("pass");
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, dbUser, dbPass);
// userInfo 테이블에서 사용자 조회
String sql = "SELECT uid, uname, priority FROM userInfo WHERE uname=? AND pass=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, uname);
pstmt.setString(2, pass);
rs = pstmt.executeQuery();
if (rs.next()) {
// 로그인 성공 - 세션에 저장
session.setAttribute("uid", rs.getInt("uid"));
session.setAttribute("uname", rs.getString("uname"));
session.setAttribute("priority", rs.getInt("priority"));
session.setAttribute("login", "true");
response.sendRedirect("main.jsp");
} else {
response.sendRedirect("login.jsp?error=1");
}
} catch(Exception e) {
e.printStackTrace();
response.sendRedirect("login.jsp?error=1");
} finally {
if (rs != null) try { rs.close(); } catch(Exception e) {}
if (pstmt != null) try { pstmt.close(); } catch(Exception e) {}
if (conn != null) try { conn.close(); } catch(Exception e) {}
}
%>
3. 메인 페이지 (main.jsp)
<%@ page contentType="text/html;charset=UTF-8" %>
<%
// 세션 체크
if (session.getAttribute("login") == null ||
!session.getAttribute("login").equals("true")) {
response.sendRedirect("login.jsp");
return;
}
%>
<html>
<head><title>메인</title></head>
<body>
<h2>메인 페이지</h2>
<p>환영합니다, <%= session.getAttribute("uname") %>님!</p>
<p>사용자 ID: <%= session.getAttribute("uid") %></p>
<p>권한 레벨: <%= session.getAttribute("priority") %></p>
<hr>
<a href="mypage.jsp">마이페이지</a> |
<a href="board.jsp">게시판</a> |
<a href="logout.jsp">로그아웃</a>
</body>
</html>
4. 세션 체크 모듈 (sessionCheck.jsp)
<%
// 세션 체크 함수
boolean isLogin = session.getAttribute("login") != null &&
session.getAttribute("login").equals("true");
// 로그인 안되어 있으면 로그인 페이지로
if (!isLogin) {
response.sendRedirect("login.jsp");
return; // 중요: 실행 중지
}
%>
5. 보호된 페이지 예제 (mypage.jsp)
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ include file="sessionCheck.jsp" %>
<html>
<head><title>마이페이지</title></head>
<body>
<h2>마이페이지</h2>
<h3>세션 정보</h3>
<ul>
<li>아이디: <%= session.getAttribute("uname") %></li>
<li>UID: <%= session.getAttribute("uid") %></li>
<li>권한: <%= session.getAttribute("priority") %></li>
<li>세션 ID: <%= session.getId() %></li>
</ul>