SW Academy

[CNU SW Academy] 41일차(23.01.30)

narlo 2023. 1. 30. 18:57

프로그래머스 - 프론트엔드 미니 데브코스

Firebase

api, database, hosting, 데이터 분석 등 다양한 도구를 지원

 

Netlify

배포가 매우 쉽고 간단

github repo와 연결하도록 되어 있음

서버에 한국이 없다 => 접속이 느리다

 

Vercel

Netlify와 비슷

한국 서버가 있어서 훨씬 빠르다

spa routing

 

ReactDOM.createPortal

- 원하는 곳으로 jsx를 위치시키고 싶을 때 사용

https://github.com/narlo23/SW_Academy_React/tree/storybook

 

GitHub - narlo23/SW_Academy_React: CNU SW Academy React 학습을 위한 레포입니다.

CNU SW Academy React 학습을 위한 레포입니다. Contribute to narlo23/SW_Academy_React development by creating an account on GitHub.

github.com

 

그림판

웹 보안 공격

웹 보안

- 웹사이트의 취약점을 공격하는 기술적 위협

- 웹 페이지를 통해 권한이 없는 시스템에 접근하거나 데이터 유출 및 파괴와 같은 행위 

 

SQL Injection

- 서버에서 실행되는 SQL을 악의적으로 이용하는 공격

- 기존 SQL에 악의적인 SQL을 삽입한다.

- 데이터 탈취, 삭제 등이 가능하다.

 

방어

- SQL에서 특별한 의미를 가지는 문자를 이스케이프한다.

- 준비된 선언을 사용한다.

    - placeholder를 담은 SQL을 먼저 DB에 보낸 후 placeholder에 해당하는 입력값을 DB에 보내는 방식

- Error based SQL Injection

    - 일부러 SQL 에러를발생시켜원하는 정보를 취득한다.

- Blind SQL Injection

    - DB, Table명을 알 수 있다.

- Union SQL Injection

    - union 명령을 이용해 정보를 취득

   

XSS

- cross site scripting

- 웹 페이지에 악성 스크립트를 삽입하는 공격

- 사이트의 이용자 정보를 탈취 할 수 있다.

=> 스크립트를 막아야 한다.

 

방어

- HTML 필터링을 한 후 DB에 저장한다.

- 프론트엔드에서도 태그와 관련된 것을 필터링한다.

 

- Stored XSS

- Reflected XSS

    - 검색어 등을 보여주는 곳에 스크립트를 심는 공격

    - url을 사용자에게 누르게 만들면 공격 성공

- DOM based XSS

    - DOM에 악의적인 스크립트를 심는 공격

    - 브라우저가 해석하는 단계에서 발생되는 공격

  

CSRF Attack

- Cross Site Request Forgery

- 공격자가 사용자를 이용하여 웹 사이트에 요청을 보내는 공격

왼쪽은 fishing site

 

방어

- Referrer Check

    - 허용한 도메인만 요청 허락하도록 설정

- CSRF Token

    - 모든 요청에 토큰을 발급하여 서버에서 검증

- CAPTCHA

    - 사람이 요청한 것이 맞는지 검증

 

Command Injection

- 애플리케이션에서 사용되는 시스템 명령에 악의적인 명령어를 삽입하는 공격(WebShell Attack)

- 서버 root 권한을 취득할 수 있다.

 

방어

- 가급적 시스템 함수는 사용하지 않도록

- 민감한 문자를 필터링 (|, &, ;, >, <)

 

File Upload Attack

- 악성 스크립트 파일을 업로드하는 공격

- 업로드 후 파일 위치를 찾아 실행시키면 공격 성공

- 요즘 시대에는 보기 힘듦

 

방어

- 확장자 / 파일 타입 검사

- 업로드 파일을 난수화하여 저장

- 특수 문자가 포함된 경우 업로드 금지

 

JavaScript Injection

- Client side에서 Javascript를 삽입시키는 공격

- 크롬 console 등을 통해 조작 가능하다.

 

방어

- client side엔 민감한 정보를 절대 넣지 않는다.

- 데이터 유효성 검사가 필요한 경우 서버와 통신한다.

 

DDoS

- Distributed Denial of Service

- 서버에 비정상적으로 많은 트래픽을 보내는공격

- 서비스가 마비되고 많은 비용이 소모된다.

 

방어

- 확장 가능한 서비스 구조 설계

- IP 필터링

- Rate limit

- 솔루션 구매

 

Dictionary Attack

- 미리 사전에 등록해놓은 문자열을 암호로 대입하는 공격

 

방어

- 의미가 있는 문자열은 암호로 등록 못하도록 설정

- Account Lockout Policy : 5번 암호를 틀렸을 때 잠금

- 2-factor 인증

 

Rainbox Table

- 해시 함수를 이용한 평문을 모두 저장시켜놓은 표

 

방어

- Salt 사용

- Key Stretching

- PBKDF2, Bcrypt 등의 암호화 알고리즘 사용

 

보안정책

CORS(Cross-Origin Resource Sharing)

- 개발자가 지정한 프로토콜, 도메인, 포트가 아니라면 리소스를 가져올 수 없다.

- Response Header를 보고 허용 여부를 브라우저가 정한다.

 

CSP(Content-Security-Policy)

- 실행 가능한 리소스에 대한 WhiteList를 정하는 정책

- 웹 사이트가 허용되지 않은 리소스를 요청하지 못하도록 막는다.

HTTPS

- HTTP 프로토콜의 암호화 된 버전

- 소켓 통신에 암호화된 데이터를 전송

- SSL 인증서를 이용


코딩테스트

팬그램

s = input().lower().replace(" ", "")
sets = set(s)

if len(sets) == 26:
    print('YES')
else:
    print('NO')

'SW Academy' 카테고리의 다른 글

[CNU SW Academy] 43일차(23.02.01)  (0) 2023.02.02
[CNU SW Academy] 42일차(23.01.31)  (0) 2023.01.31
[CNU SW Academy] 40일차(23.01.27)  (0) 2023.01.27
[CNU SW Academy] 39일차(23.01.26)  (1) 2023.01.26
[CNU SW Academy] 38일차(23.01.25)  (0) 2023.01.25