프로그래머스 - 프론트엔드 미니 데브코스
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 |