{ํ์คํ} JavaScript 8๊ฐ - Strict mode/ESLint/Prettier/Built-in/SQL Injection/Faas/HTTP/UTF-8/Fragment
- ์คํด์ ์์ง๊ฐ ์๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์๋จ
- ์ผ๋ฐ ํจ์๋ก ํธ์ถํ ํจ์ ์์ this๋ ์ ์ญ ๊ฐ์ฒด => ํจ์ ์์์ this ์ฌ์ฉ์ error ๋ฐ์ (strict mode์์)
x = 1
๋ ์ ์ญ์ผ๋ก ์กํ => ํธ์ด์คํ error ๋ฐ์
(๋ณ์ ์์ let/const ํค์๋ ๋ฌด์กฐ๊ฑด ์ฌ์ฉํ์ฌ์ผ ํจ)use strict;
- ๊ฐ๋ npm ๋๋ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํ๋๋ฐ strict mode ๊ฑธ์๋๋ ์๋ฌ ๋ฐ์ ๊ฐ๋ฅ
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ง๋ ํ์ฌ๋ก ์ด๋ฉ์ผ ๋ณด๋ด์ ์์ ์์ฒญ
- ๋ฐ์ strict mode๊ฐ ์๋๋ฐ ํจ์ ๋ด๋ถ๋ง strict mode๋ง ์ฐ๋ฉด ์๋จ
- ํท๊ฐ๋ฆผ (์คํด์ ์์ง ์์)
- ๋ฆฌ์กํธ => App.jsx (์ ์ผ ๋ฐ๊นฅ ์ปดํฌ๋ํธ์ React Strict Mode ๊ฑธ์)
- ์ต๊ทผ์ Strict mode ์๋ฏธ๊ฐ ๋ง์ด ์์ด์ง
- ESLint, Prettier (VS Code extension)
- ESLint; ๊ตฌ๋ฌธ ์ค๋ฅ, ์คํด ์์ง ๋ค ์ก์์ค
- Prettier; code format ๋ณด๊ธฐ ํธํ๊ฒ ๋ง๋ค์ด์ค
- ESLint, Prettier (VS Code extension)
- ํ์ค ๋นํธ์ธ ๊ฐ์ฒด (์คํ ๋ค๋ ๋นํธ์ธ)
- ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋์ ๊ฒ
- ECMAScript ์์ ๋ฏธ๋ฆฌ ์ ์ํด ๋์ ๋ช ์ธ
- ๋ชจ๋ JS์์ ๋ค ๊ตฌ๋๋จ
- window, self, Infinity, NaN, isNaN, parseInt(), String, Number, Boolean ...
- ํธ์คํธ ๋นํธ์ธ ๊ฐ์ฒด (๋ธ๋ผ์ฐ์ ๋นํธ์ธ)
- DOM; element, style, document, ...
- BOM (Browser Object Model); location, history, bookmark, ...
- ์ปค์คํ
๋นํธ์ธ ๊ฐ์ฒด (๋ด๊ฐ ๋ง๋ ๋นํธ์ธ)
- ex) JArray ์ swap ๋ฉ์๋
- eval('str')
- ex)
eval('const a = 1; console.log(a + 1);')
- ;์ ๋ฌธ์ฅ ๊ตฌ๋ถ
- node ํ๊ฒฝ์์ fs (file system) ์ ๊ทผ ๊ฐ๋ฅ, ํน์ ๊ฒฝ๋ก remove๋ ๊ฐ๋ฅ
- eval์ ์ํํจ, ์ด๋ค ๋ฉด์์๋ ์ฌ์ฉ์ฑ์ด ์ข์ ์๋ ์๊ธด ํจ
- FaaS; cloud ํ๊ฒฝ์์ text area์ js ์ฝ๋ ๋ฃ์ผ๋ฉด API๋ก ๋ง๋ค์ด์ง (ex. AWS Lambda)
- eval๋ก ์คํ์์ผ ๋์ผ๋ฉด ํจ์๊ฐ ์๊น
- ํจ์๊ฐ ์คํ ์ปจํ ์คํธ์ ์กด์ฌํด์ ํธ์ถ ๊ฐ๋ฅ
- eval ํจ์์ ๋งค๊ฐ๋ณ์ string์ด ์์ค์ฝ๋๊ฐ ๋๋ฒ๋ฆผ
- rule ๊ธฐ๋ฐ์ผ๋ก ํจ์ ๋ง๋ค์ด์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ธ์คํด์ค๋ก ์ฌ๋ฆด ์ ์๋ค ๋ฑ ์๊ฐ ๊ฐ๋ฅ...
- ์ฐธ๊ณ ) JAVA - ๋ฆฌํ๋ ์
- eval ์ค์ฝํ
- strict mode์์๋ ์ string ์ผ๋ก ๋ค์ด๊ฐ๋ ๋ถ๋ถ๋ง ๋ฐ๋ก ์ก์ (๋ณ๋์ ์ค์ฝํ)
- ํจ์ ์์ ๋ณ๋ ์ค์ฝํ๋ก ์ธ์๋จ
- ex)
- HTTP ๋ฉ์๋
- GET; ๋ธ๋ผ์ฐ์ ์ฐฝ์ ์ฃผ์ ์์ผ๋ก๋ง ๋ฐ์ดํฐ ์ ๋ฌ ex) ?a=1&b=2 // node ์์๋ request.params ์ผ๋ก ๋ฐ์ ์ ์์
- ๊ฒ์ ์ฐ๋ ๊ฒ (ํธ์ง ๋ดํฌ)
- 1024 (http 1.0) ~ 4096 ๋ฐ์ดํธ ์ด๊ณผํ๋ฉด ์๋จ
- ex) board/delete?id=1 ๋ก get ์ด์ฉํด์ ๋ง๋ค๋ฉด ์ํ (์๋ฌด๋ ๋ค ๋ถ๋ฅผ ์ ์์)
- POST; ํธ์ง์ง ์์ ์ฐ๋ ๊ฒ
- ๋ง์ ๋ฐ์ดํฐ๋ ๋ฌด์กฐ๊ฑด post ์ด์ฉ (ํ์ผ ์ ๋ก๋ ํฌํจ)
- DELETE; ex) ๊ฒ์๊ธ 100๋ฒ ์ญ์ ํด์ค~
- ์์ฑ์๋ง ์ง์ธ ์ ์๋๋ก ๋ก๊ทธ์ธ ๋ฑ ์ฒดํฌ...
(์์ฑ์์ id์ ์ง์ฐ๋ ค๊ณ ํ๋ ๊ฒ์๊ธ์ ์ฌ์ฉ์ cookie ์ผ์นํ๋์ง ์ฒดํฌ)
- ์์ฑ์๋ง ์ง์ธ ์ ์๋๋ก ๋ก๊ทธ์ธ ๋ฑ ์ฒดํฌ...
- PUT; ์์
- PATCH; ์์
- OPTIONS; ์๋ฒ์์ ์ด๋ค ๋ฉ์๋ ์ง์ํ๋์ง ์๋ ค์ค
- GET; ๋ธ๋ผ์ฐ์ ์ฐฝ์ ์ฃผ์ ์์ผ๋ก๋ง ๋ฐ์ดํฐ ์ ๋ฌ ex) ?a=1&b=2 // node ์์๋ request.params ์ผ๋ก ๋ฐ์ ์ ์์
- URL ์ฃผ์์ ํ๊ธ ์์ผ๋ฉด encoding ๋จ (๋ณต๋ถํ์ ๋)
- URL ์ฃผ์๋ ๋คํธ์ํฌ๋ฅผ ํ๊ณ ๋ ๋ผ๊ฐ
- ํ๊ธ์ UTF-8๋ก ์ธ์๋์ ํ๊ธ 1๊ธ์๋ 3๋ฐ์ดํธ
์๋ฌธ, ์ซ์ 1๋ฐ์ดํธ, ํน์๋ฌธ์ 2๋ฐ์ดํธ, ์ผ๋ณธ์ด 3๋ฐ์ดํธ, ์ค๊ตญ์ด 3๋ฐ์ดํธ, ์ด๋ชจํฐ์ฝ 3 or 4 ๋ฐ์ดํธ - ์ธ์ฝ๋ฉ๋์ ์๋ฒ๋ก ๋ ๋ผ๊ฐ๋ฉด ์๋ฒ์์๋ ๋์ฝ๋ฉํจ
(express, flask ๋ฑ ์๋ฒ ํ๋ ์์ํฌ๋ค์ด ๋์ฝ๋ฉํด์ ๋ํํ ๋๊ฒจ์ค) - https/http - ํ๋กํ ์ฝ
- www.naver.com - ๋๋ฉ์ธ
- /board/ - path
- :8080 - ํฌํธ
- ?a=1 - ์ฟผ๋ฆฌ ์คํธ๋ง
- URL ๋ค์ # ๋ถ์ผ ์ ์์ - ํ๋ฉด ์ ๋ค์งํ // ์ฑ๊ธ ํ์ด์ง์์ ๋ฐ๋ก ์คํฌ๋กค
- ํ๋๊ทธ๋จผํธ
- ํ๋ฉด์์์ ์คํฌ๋กค๋ก ์ด๋๋จ (a ํ๊ทธ ๋งํฌ)
- ๋ค๋ฅธ ๊ณณ์ผ๋ก ๊ฐ์ง ์์
- ๋ฆฌ์กํธ์์๋ ํ๋๊ทธ๋จผํธ ์ฌ์ฉํจ, ํ๋์ ์์ญ (์์น๋ง ์ก์์ฃผ๋ ๊ฒ)
-
SQL Injection
- ex)
delete from User;
- ์๋ธ์ฟผ๋ฆฌ ์ฒ๋ผ ์ฒ๋ฆฌ๋์ ์คํ๋ ์ ์์
- ํ์ฌ๋ ๊ฐ๋ค์ด ๋ค ์ด์ค์ผ์ดํ ์ฒ๋ฆฌ ๋์ ์์ text๋ก ์ธ์๋จ
- ex)
-
OPTIONS ๋ฉ์๋ ์ฐธ๊ณ
- ํ๋์นด๋
- PG ์ฌ (๊ฒฐ์ ์ฌ) API ์๋ฒ ์ฐ๋ํ ๋
- ๋ธ๋ผ์ฐ์ ๊ฒฐ์ ์ฐฝ (ํ์ - PG์ฌ์์ ๋์์ค, ๊ณ ๊ฐ์ ์์ ID ๊ฐ์ง๊ณ PG์ฌ์ ์ ํด์ง API๋ง ํธ์ถํ์ ๋ฟ)
- ์์ ID
- ์ธ๋ถ์ ์๋ API ํธ์ถํ ๋๋ api token, secret key, (server key <- for push to app) ํ์
- server key๋ server๊ฐ ๊ฐ์ง๊ณ ์์
- token์ ๊ธฐ๊ธฐ๋ง๋ค ์ ํด์ง
- secret key๋ ์์ id ์ํธํํด์ uniqueํ๊ฒ ๋ง๋ค์ด์ง ๊ฒ
- ์ฌ์ฉ์๊ฐ ์ธ์ฆ ๋คํ๋ฉด ๊ทธ ๋ฐ์ดํฐ๋ ์ฐ์ PG์ฌ์ ์๋ฒ๊ฐ ๋ฐ์
- ๋ธ๋ผ์ฐ์ - PG์ฌ - ์์ ์๋ฒ - PG์ฌ (์์ ์๋ฒ์์ OK) - ์นด๋์ฌ - PG์ฌ - ์์ ์๋ฒ - ๊ณ ๊ฐ ๋ธ๋ผ์ฐ์ ๋ก redirect
- ๊ณ ๊ฐ PC ๋ธ๋ผ์ฐ์ - PG ์ฌ์ด๋ HTTPS๊ฐ ์ง์ผ์ค (์ํธํ)
- PG์ฌ๊ฐ ํ๋์นด๋๋ก ๋ณด๋ด์ ํ๋์นด๋์์ ์นด๋ ์น์ธ ๋ค ํ๋ฉด (ํ๋์ฌ์ ๋ณด์๋ง ์์)
- PG์ฌ๊ฐ ๊ณ ๊ฐํํ ์๋ ค์ค์ผ ํ๋๋ฐ ๋ฐ๋ก ๋ฐํํ์ง ์์
- ์ด๋ฏธ ์์ค์ฝ๋ ๋ ธ์ถ๋ ์ํ์ (๊ณ ๊ฐ - PG์ฌ)
- ์น์ธ๋ ๊ฒฐ๊ณผ๋ ์์ ์๋ฒ๋ก ๋ณด๋ (check api ์ฌ์ ๊ตฌํ, ์น์ธ๋ ๊ฒฐ๊ณผ db์ ์ ์ฅ ํ์, ๋ฌธ์ ์์ผ๋ฉด rejectํ๊ณ ๋ฐ๋ณต...)
- ์์ ์๋ฒ์์๋ ๊ณ ๊ฐ ๋ธ๋ผ์ฐ์ ๋ก redirect ํจ (๊ณ ๊ฐ ๋ธ๋ผ์ฐ์ ์ ์์ ์๋ฒ ์ฌ์ด์ ์ฐ๊ฒฐ ๊ณ ๋ฆฌ๊ฐ ์์)
- session ์๊ณ ์์ผ๋ฉด ๋ฆฌ๋ค์ด๋ ํธ ๋ณด๋ผ ์ ์์ (๊ณ์ ์ธ์ ๊ฐ์ง๊ณ ๋ค๋)