Closed binchoo closed 7 months ago
종종 정보 유출을 일으키는 미묘한 잘못이 있다. 존재하지 않는 자원이 요청되면 서비스가 '404 찾을 수 없음' 으로 응답하지만 존재해도 승인되지 않는 자원에 대해서는 서비스가 '403 인증 필요'로 응답한다고 가정하자. 이는 서비스가 어떤 자원의 존재 유무에 관한 정보를 외부에 유출한다는 의미다.
(p.311)
디렉터리 순회 공격이 발생할 수 있다. ~ 심지어 요청에 파일 업로드가 포함될 경우, 호출 측은 서비스에서 수정이 허용된 모든 파일을 덮어쓸 수도 있다 (서버를 루트 권한으로 실행하지 말아야 하는 또 다른 이유다!)
(p.312)
SameSite 속성은 브라우저가 문서의 출처가 대상의 출처와 동일할 때만 쿠키를 전송한다.
(p.318)
랜섬웨어 ... 영국 국민 보건 서비스가 큰 타격을 입어 엑스레이 촬영이 취소되고, 뇌졸중 센터가 폐쇄되고, 수술이 연기되어 여러 생명이 위험에 처했다.
(p. 300)
Injection은 구문 분석기나 인터프리터에 대한 공격이며, SQL 삽입이 유명하다.
SQL 삽입 Robert'); DROP TABLE Students; --
SQL 삽입은 코드에서 문자열을 조합해서 SQL 문을 만들 때 발생한다. 이제 모든 SQL 라이브러리는 인자 값이 들어갈 자리를 특수 부호로 표시하도록 해 준다.
String query = "SELECT * FROM STUDENT WHERE NAME = ?";
PreparedStatment stmt = connection.prepareStatement(query);
stmt.setString(1, name);
ResultSet results = stmt.executeQuery();
XML 외부 엔터티 삽입 XML에서는 엔터티를 새로 정의하여 공통으로 참조되는 태그 및 속성을 단축시키는 용도로 쓰이곤 한다. 외부 엔터티는, 이 엔터티와 연결된 URL에서 데이터를 수신하여 대체된다. 공격을 방지하려면 OWASP XXE 방지 지침을 구현한 XML 구문 분석기를 이용해야 한다.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<foo>&xxe;</foo>
xxe
가 해결된 값이 포함되길 기대한다. 그 값은 서버의 리눅스 유저 정보가 될 것이다.💬 제가 개발했던 출석체크 챗봇 역시 쿠키 내 저장된 세션을 유저께서 직접 제공하시도록 (정당한 하이재킹?) 하여 게임사 API를 호출하는 방식이었습니다. 전송/저장 암호화 모두 적용했으나, 게임 커뮤니티 이용규약 등, 해당 방식에 대한 부담으로 더 이상 챗봇을 운영하고 있진 않습니다.
Session fixation 유효한 세션 ID를 발급 받아 피해자 시스템에 심고 (meta 태그나 쿠키 등) 피해자가 공격자에게 모든 권한을 위임하길 기대함
Session prediction 세션 ID 생성 규칙이 유추 가능할 경우, 공격자가 이를 이용해서 세션을 탈취하고 피해자 데이터에 접근할 수 있다.
TLS 인증서 이용 미숙
솔직하게 자체 서명 인증서를 사용하는 개발 서버에서 TLS 호출하는 cURL 명령을 작성할 수 있는가?
(p.306)
💬 저자가 한 질문 스프링 기준으로 답변
--cacert
로 1에서 만든 공개키를 신뢰하여 HTTPS 엔드포인트 호출. jks
나 p12
를 pem
으로 변환 필요.재빈님 키워드 정리 (Ex. OWASP 상위 10) 3.17 발표하면 close 할 것
주제
'11장 - 보안'을 읽고 내용을 요약하거나, 중요✨ 하다고 생각하는 키워드 및 관련 설명을 코멘트로 달아주세요
연관 챕터
32
@caffeine-library/readers-release-everything