OWASP(Open Web Application Security Project)
웹 애플리케이션의 보안성을 높이기 위해 다양한 프로젝트를 진행하는 비영리 단체
OWASP Top Ten( OWASP Top Ten | OWASP Foundation )을 통해 웹 애플리케이션에서 가장 흔하게 발생하는 보안 취약점 10가지를 정리한 목록을 제공
1. Broken Access Control(접근 제어 취약점)
사용자가 허용되지 않은 리소스나 기능에 접근할 수 있는 취약점
인증된 사용자만 접근할 수 있는 관리자 페이지에 일반 사용자가 접근할 수 있는 경우
=> 고차 컴포넌트를 활용하여 권한이 있는지 확인 후 페이지 렌더링
import { useEffect, useState } from 'react';
import Paths from '../constants/Paths';
import PropTypes from 'prop-types';
import getMyMemberId from '../api/team/getMyMemberId';
import { useNavigate } from 'react-router-dom';
import { useParams } from 'react-router-dom';
const CheckTeamMember = ({ children }) => {
const navigate = useNavigate();
const { id } = useParams();
const [isValidMember, setIsValidMember] = useState(null); // State to manage validation
useEffect(() => {
const fetchMyMemberId = async () => {
try {
const myMemberId = await getMyMemberId(id);
if (myMemberId) {
setIsValidMember(true);
} else {
navigate(Paths.Landing);
}
} catch (error) {
navigate(Paths.Landing);
}
};
if (id) {
fetchMyMemberId();
}
}, [id, navigate]);
if (isValidMember === null) {
return null; // or some loading indicator
}
return isValidMember ? children : null;
};
CheckTeamMember.propTypes = {
children: PropTypes.node,
};
export default CheckTeamMember;
2. Cryptographic Failures(암호화 실패)
데이터가 안전하게 보호되지 않거나, 적절한 암호화 방법이 사용되지 않는 경우
민감한 데이터를 암호화되지 않은 상태로 저장하거나 전송하는 경우
=> URL의 쿼리 스트링에 반영하기 전, 암호화를 진행
3. Injection(인젝션)
외부 입력이 애플리케이션에 삽입되어 데이터베이스 쿼리, 명령어 등이 실행되는 경우
SQL 인젝션 등을 통해 공격자는 시스템에 접근하거나 데이터를 조작할 수 있음
=> 입력값의 특수문자를 이스케이프 후 서버에 요청 XSS 공격을 막아보자 (tistory.com)
4. Insecure Design(취약한 설계)
보안을 고려하지 않고 애플리케이션이 설계된 경우
5. Security Misconfiguration(보안 설정 오류)
애플리케이션 또는 서버의 보안 설정이 잘못되어 발생하는 문제
6. Vulnerable and Outdated Components(취약하고 오래된 컴포넌트)
오래된 버전의 소프트웨어 또는 라이브러리, 프레임워크 등을 사용하는 경우
=> 정기적인 업데이트와 패치
7. Identification and Authentication Failures(식별 및 인증 실패)
사용자의 신원을 확인하고 인증하는 과정에서 발생하는 취약점
약한 비밀번호 정책, 세션 하이재킹 등
8. Software and Data Integrity Failures(소프트웨어 및 데이터 무결성 실패)
코드와 데이터의 무결성이 보장되지 않는 경우
서명되지 않은 코드나, 무단으로 변경된 데이터를 사용하는 경우
9. Security Logging and Monitoring Failures(보안 로깅 및 모니터링 실패)
보안 관련 로그와 모니터링이 제대로 이루어지지 않는 경우
10. Server-Side Request Forgery(서버 측 요청 위조)
공격자가 서버를 통해 악의적인 요청을 다른 서버로 전달하게 만드는 취약점