STUDY 526

CSRF, Cross Site Request Forgery

교차 사이트 요청 위조 이용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 만드는 공격. 임의 이용자의 권한으로 임의 주소에 HTTP 요청을 보낼 수 있는 취약점 공격자가 작성한 악성 스크립트(HTTP 요청을 보내는 코드)를 이용자가 실행해야함 HTML tag 혹은 javascript로 작성. ex 1) HTML tag: img, form 두개의 태그를 사용해 HTTP 전송을 보내면 HTTP 헤더(쿠키)에 인증정보가 포함됨 보이지 않는 이미지 태그를 생성하고 src에 값을 넣어 요청 ex 2) javascript: /* 새 창 띄우기 */ window.open('~'); /* 현재 창 주소 옮기기 */ ocation.href = '~'; location.replace('~..

STUDY/Web 2023.09.04

XSS, Cross site scripting

클라이언트 사이드 해킹: 이용자를 식별하기 위한 세션 및 쿠키 정보를 탈취하고 해당 계정으로 임의 기능 수행 XSS: 공격자가 웹 리소스에 악성 스크립트를 삽입하고 이용자의 웹 브라우저에서 실행시켜 세션정보를 탈취함. 종류 설명 Stored XSS XSS에 사용되는 악성 스크립트가 서버에 저장되고 서버의 응답에 담겨오는 XSS Reflected XSS XSS에 사용되는 악성 스크립트가 URL에 삽입되고 서버의 응답에 담겨오는 XSS DOM-based XSS XSS에 사용되는 악성 스크립트가 URL Fragment에 삽입되는 XSS * Fragment는 서버 요청/응답 에 포함되지 않습니다. Universal XSS 클라이언트의 브라우저 혹은 브라우저의 플러그인에서 발생하는 취약점으로 SOP 정책을 우회하..

STUDY/Web 2023.09.04

SOP & CORS

SOP - Same Origin Policy, 동일 출처 정책 클라이언트의 권한을 이용해 HTTP 요청을 보내고 HTTP 응답 정보를 획득 하는 코드를 실행할 수 있음. 이런 경우 가져온 데이터를 악의적인 페이지에서 읽을 수 없도록 하는 보안 메커니즘 Cross Origin: 현재 페이지와 다른 출처 Origin과 URL을 비교했을 때 Scheme(프로토콜), Host, Port 가 다른경우 CORS - Cross Origin Resource Sharing, 교차 출처 리소스 공유 동일 출처 정책을 완화해서 다른 출처의 데이터를 처리해야 하는 경우가 필요함 처리 방법 1. CORS 관련 HTTP 헤더 추가 전송 - OPTIONS (HTTP Method) Header 설명 Access-Control-All..

STUDY/Web 2023.09.04

Cookie & Session

HTTP 프로토콜 특징 Connectionless: 하나의 요청에 하나의 응답을 한 후 연결을 종료함. Stateless: 통신이 끝난 후 상태 정보를 저장하지 않음 웹서버는 클라이언트를 기억할수 없음 쿠키 (Cookie) 상태를 유지하기 위해 사용 서버에 요청을 보낼때마다 쿠키를 같이 전송함 쿠키를 확인해서 클라이언트 구분 쿠키 변조 쿠키를 통해 인증 정보를 식별하는 경우 쿠키를 변조해서 다른 사람인 것 처럼 사용해도 인증 통과 가능 세션 (Session) 클라이언트가 인증 정보를 변조할 수 없게 하기위해 사용 인증 정보를 서버에 저장하고 해당 데이터에 접근할 수 있는 키(Session ID)를 만들어 클라이언트에 전달함. 브라우저는 해당 키를 쿠키에 저장하고 이후에 HTTP 요청을 보낼 때 사용함. ..

STUDY/Web 2023.09.04

[Swift]Section 8 - Intermediate Swift Programming - Control Flow and Optionals

목표: Egg Timer 만들기 계란을 눌렀을때 타이머 돌아가게끔 만들면됨. 배운것 1. Optional nil일수도 아닐수도 있습니다. 하지만 실제로 값을 사용하려면 unwrap을 해줘야함 https://developer.apple.com/documentation/swift/optional/ Apple Developer Documentation developer.apple.com 2. Timer 지정된 interval 마다 selector에 연결된 콜백함수 실행 https://developer.apple.com/documentation/foundation/timer Apple Developer Documentation developer.apple.com 3. ProgressView 진행 상황을 볼 수 ..

STUDY/Swift & iOS 2023.01.31

[Swift] Section 7 - Using and Understanding Apple Documentation

목표: 실로폰 어플리케이션을 만들면서 애플 공식 문서 사용해보기 구현하다 막히는 경우 이런 방식으로 접근하라고 한다. 구글링 - 스택오버플로우 검색 - 기능 구현(사실상 복붙) - 공식 문서 확인 - 커스터마이징 실로폰 버튼을 눌렀을때 소리가 나게 만들어야하는데 막힌경우 이렇게 할수 있다. Google 검색 "play sound swift stackoverflow" https://stackoverflow.com/questions/32036146/how-to-play-a-sound-using-swift 위 링크에서 확인한 코드로 구현 공식문서를 통해 클래스나 함수, 메서드 등 확인 https://developer.apple.com/documentation/avfoundation/ xcode에서 확인하고싶은..

STUDY/Swift & iOS 2023.01.26

[Swift] Section 6 - Auto Layout and Responsive UIs

목표: 반응형 레이아웃 만들기 - 이전까진 특정 크기의 화면만 대응했음. 하지만 옆으로 눕혀서 사용할때나 화면 크기가 다른경우 깨지는 문제가 있음 - 하지만 모든 화면크기에 대해서 하나씩 만드는 건 비효율적임 1. Pin (constraints) 반응형으로 만드는 방법중 하나. constriant를 모든 모서리에 0으로 잡으면 회전할때도 맞게 변형됨. 백그라운드 만들때 괜찮은 방법 하지만 일정 사이즈가 들어가는 경우 옆으로 눕혀서 사용할때 깨질 가능성이 높음 2. Alignment 모든 크기에 맞추기 위한 적절한 방법. 특정 아이템과 일정 이상을 띄우고 싶으면 싶으면 constraint과 조합해서 사용하면 됨 - horizontal alignment로 중앙을 맞춘다음 윗부분을 constraint로 띄우는..

STUDY/Swift & iOS 2023.01.24

[Swift] 38. Responding to User Interactions with IBActions

Udemy 강의 "iOS & Swift - The Complete iOS App Development Bootcamp" 버튼을 눌렀을때 이미지를 변환하는 코드(주사위 이미지 변경) 더보기 import UIKit class ViewController: UIViewController { // asset을 가져오기 위한 배열 let diceArray: [UIImage] = [ UIImage(imageLiteralResourceName:"DiceOne"), UIImage(imageLiteralResourceName:"DiceTwo"), UIImage(imageLiteralResourceName:"DiceThree"), UIImage(imageLiteralResourceName:"DiceFour"), UIImag..

STUDY/Swift & iOS 2023.01.16

[Leetcode] 2353 Design a Food Rating System, C++

문제 요약 Food Rating System을 만들면 됨 접근 1. 구현 초기화 모든 값을 저장함 -> 새로운 값이 들어올때마다 추가함. cuisines[i]에 어떤 값이 들어있는지 모르므로 새로운 값이 들어올때마다 저장해야함.(unordered_map) cuisines[i] 마다 foods[i]와 ratings[i] 를 우선순위를 주어 저장해야함. (priority_queue) -> 점수가 같으면 사전순으로 작은 이름이 우선임 changeRating 새로운 값으로 바꿈 priority_queue를 사용하므로 값을 제거하기 어려우므로 추가만하는 방향으로 진행 highestRated priority_queue를 사용하면 제일 위에 있는 값을 출력하면 됨. changeRating에서 값을 제거하지 않고 추가..

STUDY/Algorithm 2022.10.13