haeyeomiso
@haeyeomiso
Students
499
Reviews
25
Course Rating
4.5
๋ฐ๊ฐ์ต๋๋ค!
AI์ ์ปดํจํฐ ๊ณตํ์ ๋ฌดํํ ๊ฐ๋ฅ์ฑ์ ํ๊ตฌํ๋ฉฐ, ๊ทธ ์ฌ์ ์ ์ฌ๋ฌ๋ถ๊ณผ ๋๋๊ณ ์ถ์ ํด์ฌ์ ๋๋ค.
ํ๋ถ ์์ '์ปดํจํฐ ๊ณตํ ์ค๋ ์'๋ผ ๋ถ๋ฆด ๋งํผ ์ ๊ณต์ ๋ํ ์ด์ ์ผ๋ก 4.4์ ์ด์์ ์ ๊ณต ํ์ ์ผ๋ก ์์ ์กธ์ ํ์๊ณ , S๋ํ์์์ AI๋ฅผ ์ ๊ณตํ๋ฉฐ ์์ฌ ํ์๋ฅผ ๋ฐ๊ณ ๋ฐ์ฌ ๊ณผ์ ์ ํตํด ์ ๋ฌธ์ฑ์ ์ฌํํ์ต๋๋ค.
ํ์ง๋ง ์ด๋ก ์ ํ๊ตฌ๋งํผ์ด๋ ์ค์ ์ธ์์ ๋ฌธ์ ๋ฅผ AI๋ก ํด๊ฒฐํ๋ ๊ฒ์ ํฐ ๋งค๋ ฅ์ ๋๊ปด, ๋ฐ์ฌ ๊ณผ์ ์ ์ ์ ๋ฉ์ถ๊ณ ์คํํธ์ ์์ AI ๊ธฐ๋ฐ LLM ๋ฐ ๋น๋์ค ๋ถ์ ํ๋ก์ ํธ๋ฅผ ๊ฒฝํํ๋ฉฐ ๊ท์คํ ์ค์ ๊ฒฝํ์ ์์์ต๋๋ค.
์ง๊ธ์ ๊ตญ๋ด Top3 ๋๊ธฐ์ ์ค ํ ๊ณณ์์ LLM ํ๋ก์ ํธ ๊ฐ๋ฐ ๋ฐ PM์ผ๋ก ์ผํ๋ฉฐ, AI ๊ธฐ์ ์ด ์ฐ๋ฆฌ ์ถ์ ๊ฐ์ ธ์ฌ ๊ธ์ ์ ์ธ ๋ณํ๋ค์ ๋ง๋ค์ด๊ฐ๋ ๋ฐ ๊ธฐ์ฌํ๊ณ ์์ต๋๋ค. ์ ๊ฐ ๊ฒช์๋ ๊ณ ๋ฏผ๊ณผ ํด๊ฒฐ์ ๊ณผ์ , ๊ทธ๋ฆฌ๊ณ ํ์ฅ์์ ์ป์ ์์ํ ๋ ธํ์ฐ๋ค์ ์ฌ๋ฌ๋ถ๊ป ์๋์์ด ์ ๋ฌํด ๋๋ฆฌ๊ฒ ์ต๋๋ค. AI๋ผ๋ ํฅ๋ฏธ๋ก์ด ์ธ๊ณ๋ก์ ์ฌ์ ์ ๋ ๋ ํ ๊ธธ์ก์ด๊ฐ ๋์ด ๋๋ฆด๊ฒ์.
๋ฌธ์ ๋ฐ ์ ์ : haeyeo.open@gmail.com
Courses
Reviews
- FastAPI: Make 3x quicker, 2x more accurate, 10x faster APIs with Python
- Master All Backend Knowledge with Just One Course!
- FastAPI: Make 3x quicker, 2x more accurate, 10x faster APIs with Python
- FastAPI: Make 3x quicker, 2x more accurate, 10x faster APIs with Python
- Master Python Project & Dependency Management All at Once with Poetry!
Posts
Q&A
CRUD๊ด๋ จ: async def get_db() ๊ด๋ จ
์๋ ํ์ธ์! ๊ฐ์ฌ ํด์ฌ์ ๋๋ค.์ง๋ฌธ์ ๋๋ฝํ์ฌ ๋ต๋ณ์ด ๋ฆ์ด์ง ์ ์ฌ๊ณผ๋๋ฆฝ๋๋ค ใ ใ ! 1. ๊ฐ์ ์ฝ๋๋ ์ฌ์ค.. ์ด๋ฏธ ์ปค๋ฅ์ ํ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.SQLAlchemy์ create_async_engine ํจ์๋ poolclass ์ธ์๋ฅผ ๋ณ๋๋ก ์ง์ ํ์ง ์์๋, ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋น๋๊ธฐ ํ๊ฒฝ์ ์ต์ ํ๋ AsyncAdaptedQueuePool์ ์ฌ์ฉํฉ๋๋ค.๋ฐ๋ผ์ ๊ฐ์ ์ฝ๋(create_async_engine(DATABASE_URL, echo=True, future=True))๋ ํ๋ง์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์๋๋ผ, ๊ฐ์ฅ ํ์ค์ ์ด๊ณ ์ ์ ํ ๋น๋๊ธฐ ์ปค๋ฅ์ ํ์ ๊ธฐ๋ณธ ์ค์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์๋ ๊ฒ์ ๋๋ค.2. ๊ทธ๋์.. ๋ณ๋๋กpoolclass=QueuePool์ ์ถ๊ฐํ ํ์๋ ์์ต๋๋ค!AI์ ๋ต๋ณ ์์์ ํฌํจ๋ poolclass=QueuePool์ 'ํ๋ง ๊ธฐ๋ฅ์ ์๋ก ์ถ๊ฐ'ํ๋ ์ฝ๋๊ฐ ์๋๋๋ค.QueuePool์ ๋ณธ๋ ๋๊ธฐ(sync) ๋ฐฉ์์ฉ ํ์ ๋๋ค. create_async_engine์ ์ด ์ธ์๋ฅผ ์ ๋ฌํด๋ SQLAlchemy๊ฐ ๋ด๋ถ์ ์ผ๋ก AsyncAdaptedQueuePool๋ก ๊ฐ์ธ์(wrapping) ์ฒ๋ฆฌํด์ฃผ๊ธฐ๋ ํ์ง๋ง, ์ด๋ ๋ถํ์ํ ์ฝ๋์ด๋ฉฐ ํผ๋์ ์ค ์ ์์ต๋๋ค. 3. ๋ํ ์ผ๋ฐ์ ์ผ๋ก ์ฑ๋ฅ ํ๋์ ๋ค๋ฅธ ํ๋ผ๋ฏธํฐ๋ก ์ํํฉ๋๋ค.AI์ ๋ต๋ณ์์ ์ค์ง์ ์ผ๋ก ์ ์ฉํ ์ ๋ณด๋ pool_size, max_overflow, pool_recycle ๊ฐ์ ํ๋์ฉ ํ๋ผ๋ฏธํฐ์ ๋๋ค.์ด ํ๋ผ๋ฏธํฐ๋ค์ AsyncAdaptedQueuePool์ ํฌํจํ ๋ชจ๋ ํ์์ ๊ณตํต์ ์ผ๋ก ์๋ํฉ๋๋ค.์ค์ ์๋น์ค๋ฅผ ์ด์ํ ๋๋ ํธ๋ํฝ ์ํฉ์ ๋ง์ถฐ ์ด ๊ฐ๋ค์ ์กฐ์ ํ์ฌ(์: pool_size=10, max_overflow=20) ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค!
- 0
- 2
- 73
Q&A
nox ์คํ ์๋ฌ ๋ฉ์ธ์ง
์๋ ํ์ธ์ ๊ฐ์ฌํด์ฌ์ ๋๋ค. ์์คํ ํผ๋๋ฐฑ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ํ์ฌ ํด๋น ๊ฐ์์ ๊ตฌ์ฑ์ด E2E๋ก ์งํ๋๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค๋ ํผ๋๋ฐฑ์ด ์์ด, ์๋กญ๊ฒ ๊ฐ์๋ฅผ ์์ฑํ๊ณ ์์ต๋๋ค. ๋ง์์ฃผ์ ๋ถ๋ถ์ ๋ฐ๋ก ์ฒ๋ฆฌํด๋๊ฒ ์ต๋๋ค ๐ ๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 40
Q&A
.
์๋ ํ์ธ์. ๊ฐ์ฌํด์ฌ์ ๋๋ค. ์ง๋ฌธ์ ๋ด์ฉ์ด ์ญ์ ๋ ๋ฏ ํ๋ค์! ํ์ธ ์ฃผ์๋ฉด ๋ต๋ณ๋๋ฆด๊ฒ์ ๐
- 0
- 2
- 53
Q&A
ํซํฝ์ค์ฝ๋ ์์ ํ์
์๋ ํ์ธ์ ๊ฐ์ฌํด์ฌ์ ๋๋ค! ์์ด๊ณ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๊ฐ์์๋ฃ๋ฅผ ์์ฑํ๋ ์ค ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐ ์ ์๋ฌ๊ฐ ์์๋ ๊ฒ ๊ฐ๋ค์! ํ์ธ ํ ์ฒ๋ฆฌํด๋๊ฒ ์ต๋๋ค! ๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 33
Q&A
13๊ฐ ์ง๋ฌธ
์๋ ํ์ธ์! ๊ฐ์ฌ ํด์ฌ์ ๋๋ค.๋จผ์ ์๊ฐ์ ์ฒญ์ ๋ํ ๊ฐ์ฌ์ ๋ง์๊ณผ ๋ฆ์ด์ง ๋ต๋ณ์ ๋ํ ์ฌ๊ณผ์ ๋ง์์ฌ๋ฆฝ๋๋ค. ์๋ ํ์ธ์! ๋ ๊ฐ์ง ์ง๋ฌธ์ ๋ํด ๋ต๋ณ๋๋ฆฌ๊ฒ ์ต๋๋ค.1๋ฒ ์ง๋ฌธ .๋ค, ์ข์ ๊ด์ฐฐ์ ๋๋ค! ํผ๋์ค๋ฌ์ฐ์ค ์ ์๋๋ฐ, ์ ํํ ํด์์ ์ค๋ช ๋๋ฆด๊ฒ์.ํด๋น ๋ถ๋ถ์ Pycaret ๋ฒ์ ์ ๋ฐ๋ผ ์ธ์ฝ๋ฉ์ด ์ด๋ป๊ฒ ๋๋ ์ง์ ๋ฐ๋ผ ๋ฌ๋ผ์!๋ค์์ ๊ฒฝ์ฐ๋ผ๋ฉด, *(์ผ๋ฐ์ ์ผ๋ก ์ํ๋ฒณ ์ ์ธ์ฝ๋ฉ ๋๋ฌธ์)ํด๋์ค 0 = 'CH' (์ํ๋ฒณ์์ผ๋ก ๋จผ์ ์ค๋ ๊ฒ)ํด๋์ค 1 = 'MM'SHAP ๊ฐ์ ์๋ฏธ์(+)์ SHAP ๊ฐ: ํด๋์ค 1(MM) ์์ธก ํ๋ฅ ์ ๋์์(-)์ SHAP ๊ฐ: ํด๋์ค 0(CH) ์์ธก ํ๋ฅ ์ ๋์๋ฐ๋ผ์ ์ฌ๋ฐ๋ฅธ ํด์์:LoyalCH๊ฐ ๋์ผ๋ฉด(๋นจ๊ฐ์) โ SHAP ๊ฐ์ด ์์ โ CH(ํด๋์ค 0) ๊ตฌ๋งค ํ๋ฅ ์ฆ๊ฐ๊ฐ ๋๊ฒ ๋ฉ๋๋ค!๋ง์ผ ์๊ฐ์ ๋ถ์ ํ๊ฒฝ์์ ๋ฐ๋๋ก ๋ ์ด๋ธ์ด ๋์ด์๋ค๋ฉด ๋ง์์ฃผ์ ํด์์ด ๋ง์์ ๐2๋ฒ ์ง๋ฌธ.observation=0์ ํ๋์์(ํ ์คํธ) ์ธํธ ๊ธฐ์ค 0๋ฒ์งธ ํ์ ์๋ฏธํฉ๋๋ค. ๋ง์ฝ ์ธ๋ฑ์ค ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ์ค๋ฅ๊ฐ ๋ฉ๋๋ค.(ํ๋ จ์ ์์ ๋ณด๊ณ ์ถ๋ค๋ฉด use_train_data=True๋ฅผ ์ค ์ ์์ด์:interpret_model(tuned_lgbm, plot='reason', observation=0, use_train_data=True) )๊ฐ์ฌํฉ๋๋ค!
- 0
- 2
- 31
Q&A
best model ์ด ํ๋์ด ๋ถ๊ฐํ ๊ฒ ์ ํ๋ ๊ฒฝ์ฐ
์๋ ํ์ธ์! ๊ฐ์ฌํด์ฌ์ ๋๋ค. ์ธํ๋ฐ ์ธํด๋์ด ๋๋ฌด ์ ๋ต๋ณ์ฃผ์ จ๊ตฐ์! Pycaret์ ์ฑ๋ฅ์ ๊ธฐ์ค์ผ๋ก ๋ชจ๋ธ์ ์ ํํ๊ธฐ ๋๋ฌธ์ ํญ์ ํ๋๊ธฐ๋ฒ์ด ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ธ์ด ์ ํ๋์ง๋ ์์์! ๊ทธ๋์ ์ค๊ฐ์ค๊ฐ ๊ฐ์์์ ๋ช ๊ฐ์ง ๋ชจ๋ธ์ ์ ์ธ ํ ์ ํํ๊ณ ์๋๋ฐ, ์ด๋ฌํ ์ด์ ๋๋๋ค. ํ์ง๋ง ์ค์ ๋ก AutoML์ ๊ฐ๋จํ ํํ์ ๊ตฌํ์ด ์ ํธ๋๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ๋ถ๋ถ์ ๋ํด์๋ ํ์ฒ๋ฆฌ ํน์ ์์ธ์ฒ๋ฆฌ๋ฅผ ์ฌ์ฉํด ํจ์คํด๋ฒ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ต๋๋ค ๐ ๊ฐ์ฌํฉ๋๋ค!
- 0
- 2
- 39
Q&A
22๊ฐ ๋ง์ง๋ง ์์ ์งค๋ฆผ
์๋ ํ์ธ์! ๊ฐ์ฌ ํด์ฌ์ ๋๋ค.๋จผ์ ์น์ ํ ํผ๋๋ฐฑ๊ณผ ์๊ฐ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ๋ง์์ฃผ์ ๋ถ๋ถ์ ํธ์ง์์๊ฒ ์ ๋ฌํ์ฌ ์์ ํด๋๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
- 0
- 2
- 38
Q&A
๋ฐฑ์๋ ์ ์ ์ผ๋ก์จ ์์์ผํ ๋ณด์์ ๋ํ ๊ธฐ๋ณธ ์์ค์ด ๊ถ๊ธํฉ๋๋ค
์๋ ํ์ธ์, ๊ฐ์ฌํด์ฌ์ ๋๋ค.๋จผ์ ๋ต๋ณ์ด ๋ฆ์ด์ง ์ ์ ๋ํด ์ฌ๊ณผ์ ๋ง์์ฌ๋ฆฝ๋๋ค!.์ ๋ฉ์ผ์ด ์ง๋ฌธ ๋ฑ๋ก๊ด๋ จ ๋ฉ์ผ์ ์๋ชป ๋ถ๋ฅํด๋ฒ๋ ค์ ํ์ธ์ด ๋ฆ์๋ค์..!์ค, ์ง๋ฌธ์๋๊ป์ ์ฐพ์๋ณด์ ๋ด์ฉ์ด ๋ฐฑ์๋ ์ ์ ์ด ์์์ผ ํ ๋ณด์์ '๊ตญ๋ฃฐ' ๊ทธ ์์ฒด์ ๋๋ค! ๐ฏ๊ฒฐ๋ก ๋ถํฐ ๋ง์๋๋ฆฌ๋ฉด, ๋ค, ๊ทธ ๋ถ๋ถ๋ค์ '์ด๋ฐ ๊ฒ ์๊ตฌ๋' ์์ค์ด ์๋๋ผ, '์ง์ ' ์ฐ์ตํ๊ณ '์' ์ฐ๋์ง ์ค๋ช ํ ์ ์์ ์ ๋๋ก ์์ ์ผ ํฉ๋๋ค. ๋จผ์ ๋ง์์ฃผ์ 4๊ฐ์ง๋ ๋ณด์๊ธฐ๋ฒ์ ๋ฐฑ์๋ ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์ง๋ฉด์ ๋ง์ฃผ์น๊ณ ๊ณ ๋ คํด์ผ ํ๋, ๋ฐฅ ๋จน๋ ๊ฒ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ์ค์ ๊ธฐ๋ณธ์ ๋๋ค.SQL ์ธ์ ์ (SQL Injection)์? ๋ฐฑ์๋๋ DB์ ์ง์ ๋ํํฉ๋๋ค. ์ ์ ๊ฐ ์ ๋ ฅํ ๊ฐ์ ๊ฒ์ฆ ์์ด SQL ์ฟผ๋ฆฌ์ ๊ทธ๋๋ก ๋ถ์ฌ๋ฃ์ผ๋ฉด(string concatenation), DB๊ฐ ํต์งธ๋ก ํธ๋ฆฌ๊ฑฐ๋ ์ญ์ ๋ ์ ์์ต๋๋ค.์ด๋ป๊ฒ? "์ด๋ฐ ๊ฒ ์๊ตฌ๋"๊ฐ ์๋๋ผ, Prepared Statement (Parameter-based query) ๋ฅผ ์ ์จ์ผ ํ๋์ง, ORM(JPA, TypeORM ๋ฑ)์ด ์ด๊ฑธ ์ด๋ป๊ฒ ๋ง์์ฃผ๋์ง ์๋ฆฌ๋ฅผ ์์ ์ผ ํด์.XSS & HttpOnly์? ์ ์ ๊ฐ ์ ๋ ฅํ ์คํฌ๋ฆฝํธ๊ฐ ๋ค๋ฅธ ์ ์ ํ๋ฉด์์ ์คํ๋๋ฉด, ์ฟ ํค(๋ก๊ทธ์ธ ์ ๋ณด)๋ฅผ ํ์ทจ๋นํ ์ ์์ต๋๋ค.์ด๋ป๊ฒ? ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ ๋ ๊ฐ์ง๋ฅผ ํด์ผ ํฉ๋๋ค.๋ฐ์ดํฐ๋ฅผ DB์ ์ ์ฅํ ๋ (Input) ๋๋ ํ๋ฉด์ ๋ฟ๋ ค์ค ๋ (Output) ์ด์ค์ผ์ดํ(escaping) ์ฒ๋ฆฌ๋ฅผ ํด์ผ ํฉ๋๋ค. (e.g., ๋ฅผ <script>๋ก)์ฟ ํค๋ฅผ ๋ฐ๊ธํ ๋ HttpOnly ํ๋๊ทธ๋ฅผ ์ผ์, ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ฟ ํค์ ์ ๊ทผํ๋ ๊ฒ์ ์์ฒ ์ฐจ๋จํด์ผ ํฉ๋๋ค. (์ด๊ฑด ์์ ๋ฐฑ์๋ ์์ญ!)CSRF & SameSite์? ๋ก๊ทธ์ธํ ์ ์ ๊ฐ ์๊ธฐ๋ ๋ชจ๋ฅด๊ฒ ์ ์ฑ ๋งํฌ๋ฅผ ํด๋ฆญํด์ "๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ"์ด๋ "๊ธ ์ญ์ " ๊ฐ์ ์์ฒญ์ ์๋ฒ์ ๋ณด๋ด๋ฒ๋ฆด ์ ์์ต๋๋ค.์ด๋ป๊ฒ? ์์ ์ CSRF ํ ํฐ์ ๋ง์ด ์ผ์ง๋ง, ์์ฆ์ ์ฟ ํค์ SameSite=Strict ๋๋ SameSite=Lax ์ค์ ์ ๊ฑธ์ด์ ๋ธ๋ผ์ฐ์ ๋ ๋ฒจ์์ ๋๋ถ๋ถ ๋ฐฉ์ดํฉ๋๋ค. ์ด ์ต์ ์ด ๋ฌด์์ ์๋ฏธํ๋์ง ์๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.HTTPS (SSL/TLS)์? ์ ์ ๊ฐ ์์ด๋/๋น๋ฒ์ ์ ๋ ฅํ ๋, ๊ทธ ๋ฐ์ดํฐ๊ฐ ์ธํฐ๋ท ๋ง์ ํตํด ์๋ฒ๋ก ๋ ์๊ฐ๋ ๋ชจ๋ ๊ณผ์ ์ ์ํธํํฉ๋๋ค. ์ด๊ฒ ์์ผ๋ฉด ์ค๊ฐ์์ ๋๊ตฌ๋ ํ์ณ๋ณผ ์ ์์ด์.์ด๋ป๊ฒ? ์ ์ ์๊ฒ ์ง์ SSL ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ๊ณ ์๋ฒ์ ์ธํ ํ๋ผ๊ณ ์ํค์ง ์์ ์ ์์ง๋ง (์ฃผ๋ก ์ธํ๋ผ/๋ฐ๋ธ์ต์ค ๋ด๋น), ์ต์ํ HTTPS๊ฐ ์ ํ์ํ๊ณ , HTTP์ ๋ญ๊ฐ ๋ค๋ฅธ์ง ์ค๋ช ํ ์๋ ์์ด์ผ ํฉ๋๋ค.๊ทธ๋ฌ๋ฉด ์ 4๊ฐ๋ง ์๋ฉด ๋ ๊น์? ๋ต์ ์๋์์ ๋๋ค! ์ 4๊ฐ์ง๊ฐ '๊ณต๊ฒฉ ๊ธฐ๋ฒ'์ ๋ํ ๋ฐฉ์ด๋ผ๋ฉด, ๋ฐฑ์๋ ๊ฐ๋ฐ์๊ฐ '๊ธฐ๋ณธ์ ์ผ๋ก ๊ตฌํํด์ผ ํ ' ๋ณด์ ๊ธฐ๋ฅ๋ค์ด ๋ช ๊ฐ์ง ๋ ์์ต๋๋ค. '๊ธฐ๋ณธ ์ธํธ'๋ผ๊ณ ๋ณด์๋ฉด ๋ผ์.๐ ๋น๋ฐ๋ฒํธ ์ํธํ (Hashing)์ ๋! NEVER! ์ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฉ ํ ์คํธ(Plain Text)๋ก DB์ ์ ์ฅํ๋ฉด ์ ๋ฉ๋๋ค.์ต์ํ bcrypt ๊ฐ์ ๋จ๋ฐฉํฅ ํด์ ํจ์๋ฅผ ์ฌ์ฉํด์ 'ํด์๊ฐ'์ผ๋ก ๋ณํํด ์ ์ฅํด์ผ ํฉ๋๋ค. (MD5, SHA-1 ๊ฐ์ ์๋ ๋ฐฉ์์ ์ฐ๋ฉด ์ ๋ผ์!)๐ ์ธ์ฆ(Authentication)๊ณผ ์ธ๊ฐ(Authorization)์ธ์ฆ (AuthN): ์ด ์ฌ๋์ด '๋๊ตฌ'์ธ์ง ํ์ธํ๋ ๊ฒ (e.g., ๋ก๊ทธ์ธ, JWT ๋ฐ๊ธ)์ธ๊ฐ (AuthZ): ์ด ์ฌ๋์ด '๊ถํ'์ด ์๋์ง ํ์ธํ๋ ๊ฒ (e.g., '๊ด๋ฆฌ์'๋ง ์ด API๋ฅผ ์ธ ์ ์๋๊ฐ?)์ด๊ฑด ๊ทธ๋ฅ ๋ณด์์ด ์๋๋ผ, ๋ฐฑ์๋ ๊ธฐ๋ฅ์ ํต์ฌ์ ๋๋ค.๐ก ์ ๋ ฅ๊ฐ ๊ฒ์ฆ (Input Validation)"์ ์ ๊ฐ ๋ณด๋ด๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ ์ผ๋จ ์์ฌํ๊ณ ๋ณธ๋ค."๊ฐ ๊ธฐ๋ณธ ๋ง์ธ๋์ ์ ๋๋ค.์ด๋ฉ์ผ ํ๋์ ์ง์ง ์ด๋ฉ์ผ ํ์์ด ์๋์ง, ๋์ด ํ๋์ ์ซ์๊ฐ ์๋์ง, ๊ธ ๋ด์ฉ์ ๊ธธ์ด๊ฐ ๋๋ฌด ๊ธธ์ง ์์์ง ๋ฑ๋ฑ... ๋ชจ๋ API์ ์ ๊ตฌ์์ ๊ฒ์ฆํด์ผ ํฉ๋๋ค.๐คซ ๋ฏผ๊ฐํ ์ ๋ณด ๋ ธ์ถ ๊ธ์ง (Error Handling)์๋ฌ๊ฐ ๋ฌ์ ๋, ์ ์ ์๊ฒ SQL database connection error... ๊ฐ์ ์์คํ ๋ด๋ถ ์ค๋ฅ ๋ฉ์์ง๋ ์คํ ํธ๋ ์ด์ค(stack trace)๋ฅผ ๊ทธ๋๋ก ๋ณด์ฌ์ฃผ๋ฉด ์ ๋ฉ๋๋ค.ํด์ปค์๊ฒ ์์คํ ๋ด๋ถ ๊ตฌ์กฐ์ ๋ํ ํํธ๋ฅผ ์ฃผ๋ ๊ผด์ ๋๋ค. ์๋ฌ๋ '๋ก๊น '๋ง ํ๊ณ , ์ ์ ์๊ฒ "์๋ฒ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค." ๊ฐ์ ์ผ๋ฐ์ ์ธ ๋ฉ์์ง๋ง ๋ณด์ฌ์ค์ผ ํฉ๋๋ค.์ฌ์ค ์ ์ ํน์ ํ๋ช ์ ๊ฐ๋ฐ์์๊ฒ ์ด ๋ชจ๋ ๊ฒ์ '๋ง์คํฐ'ํด์ ์๋ฒฝํ๊ฒ ๋ฐฉ์ดํ๋ผ๊ณ ๊ธฐ๋ํ์ง ์์ต๋๋ค. ๐ ๋ค๋ง, "์ ์ฟผ๋ฆฌ๋ฅผ ์ด๋ ๊ฒ ์ง์ จ์ด์?" ๋๋ "์ฟ ํค ์ค์ ์ ์ ์ด๋ ๊ฒ ํ์ จ์ด์?"๋ผ๊ณ ๋ฌผ์์ ๋,"SQL ์ธ์ ์ ์ ๋ฐฉ์ดํ๊ธฐ ์ํด Prepared Statement๋ฅผ ์ฌ์ฉํ์ต๋๋ค.""XSS ๊ณต๊ฒฉ ์ ์ฟ ํค ํ์ทจ๋ฅผ ๋ง๊ธฐ ์ํด HttpOnly ํ๋๊ทธ๋ฅผ ์ผฐ์ต๋๋ค."๋ผ๊ณ '๋ณด์' ๊ด์ ์์ ๊ทธ ์ด์ ๋ฅผ ์ค๋ช ํ ์ ์๋ ๊ฒ. ๊ทธ๊ฒ ์ ์ ์๊ฒ ๊ธฐ๋ํ๋ '๊ธฐ๋ณธ ์์ค'์ ๋๋ค.์ง๊ธ์ฒ๋ผ ๊ถ๊ธํดํ๊ณ ์ง์ ์ฐพ์๋ณด๋ ํ๋๊ฐ ์ ์ผ ์ค์ํฉ๋๋ค! ํ์ดํ ์ ๋๋ค! ๐ช
- 0
- 2
- 65
Q&A
๋ ธ์ ํ์ต์๋ฃ ๋งํฌ ๋ถํ๋๋ฆฝ๋๋ค!
์์ด๊ณ ๊ฐ์ ์๊ฐ ํ์ด์ง ์์ ์ด ์๋์๊ตฐ์!๊ธ์ผ ์ ๋ ํด๊ทผ ํ ์์ ํด๋์๊ฒ์ ๐ ํผ๋๋ฐฑ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!!
- 0
- 2
- 32
Q&A
๊ฐ์ ์๊ฐ๋์ '์ด๋ฐ ๋ด์ฉ์ ๋ฐฐ์์' ์๋ชป ์ฌ๋ผ์จ๊ฑฐ ๊ฐ์์
์๋ ํ์ธ์, ์ฒ์ ์ ๊ณต๋๋ ํ ํ๋ฆฟ์ ํฌํจ๋ ๋ด์ฉ์ด ๋ฐ๋ก์ฌ๋ผ์๋ฒ๋ ธ๊ตฐ์ ๐ ๋ฐ๋ก ์์ ํ์์ต๋๋ค! ์น์ ํ ํผ๋๋ฐฑ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ! ์ฆ๊ฑฐ์ด ์๊ฐ๋๊ธธ ๋ฐ๋๋๋ค!! ์ธ์ ๋ ์ง๋ฌธ์ด ์๊ธฐ๋ฉด ํธํ๊ฒ ์ฌ๋ ค์ฃผ์ธ์!ํญ์ ์น์ ํ ๋ต๋ณํด๋๋ฆด๊ฒ์ ๐
- 0
- 2
- 31




