๐CS49 XSS(Cross-site Scripting) ๊ณต๊ฒฉ ๊ฐ๋ Cross-site Scripting์ ์ฝ์๋ก ๊ฒ์ํ์ด๋ ์น ๋ฉ์ผ ๋ฑ์ ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ฝ์ ํด ๊ฐ๋ฐ์๊ฐ ๊ณ ๋ คํ์ง ์์ ๊ธฐ๋ฅ์ด ์๋ํ๊ฒ ํ๋ ์น ํดํน ๊ณต๊ฒฉ ๊ธฐ๋ฒ์ด๋ค. ์ฃผ๋ก ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ํ ๊ณต๊ฒฉ์ด๋ค. SQL injection๊ณผ ํจ๊ป ์น ์์์ ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ ์ทจ์ฝ์ ๊ณต๊ฒฉ ๋ฐฉ๋ฒ์ ์ผ์ข ์ด๋ค. ์ฃผ๋ก CSRF๋ฅผ ํ๊ธฐ ์ํด์ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ข ์ข CSRF์ ํผ๋๋๋ ๊ฒฝ์ฐ๊ฐ ์์ผ๋, XSS๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํ์ํค๋ ๊ฒ์ด๊ณ , CSRF๋ ํน์ ํ ํ๋์ ์ํค๋ ๊ฒ์ด๋ฏ๋ก ๋ค๋ฅด๋ค. (CSS๋ Cascading Style Sheets์ ์ฝ์ด๋ก ์ฌ์ฉ๋๊ณ ์์ด XSS๋ผ๊ณ ํ๋ค.) ์ข ๋ฅ Reflected XSS Stored XSS 1. Reflected XSS ๋ณดํต URL ํ๋ผ๋ฏธํฐ(ํนํ GET ๋ฐฉ์)์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฃ์ด ์๋ฒ์ .. 2021. 4. 25. [Design Pattern] ํ๋ก์ ํจํด(Proxy Pattern) ๊ฐ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ํ๋ก์๋ผ๋ ์ฉ์ด๋ ํด๋ผ์ด์ธํธ์ ์ฌ์ฉ ๋์ ์ฌ์ด์ ๋๋ฆฌ ์ญํ ์ ๋งก์ ์ค๋ธ์ ํธ๋ฅผ ๋๋ ๋ฐฉ๋ฒ์ ์ด์นญํ๋ ๋ฐ๋ฉด, ๋์์ธ ํจํด์์ ๋งํ๋ ํ๋ก์ ํจํด์์ ํ๋ก์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ์ค์์ ํ๊น์ ๋ํ ์ ๊ทผ ๋ฐฉ๋ฒ์ ์ ์ดํ๋ ค๋ ๋ชฉ์ ์ ๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ํ๋ก์ ํจํด์ ํ๋ก์๋ ํ๊น์ ๊ธฐ๋ฅ์ ํ์ฅํ๊ฑฐ๋ ์ถ๊ฐํ์ง ์๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ํ๊น์ ์ ๊ทผํ๋ ๋ฐฉ์์ ๋ณ๊ฒฝํ๋ค. ํ๊น ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๊ธฐ๊ฐ ๋ณต์กํ๊ฑฐ๋ ๋น์ฅ ํ์ํ์ง ์์ ๊ฒฝ์ฐ์๋ ๊ผญ ํ์ํ ์์ ๊น์ง ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ์ง ์๋ ํธ์ด ์ข๋ค. ๊ทธ๋ฐ๋ฐ ํ๊น ์ค๋ธ์ ํธ์ ๋ํ ๋ ํผ๋ฐ์ค๊ฐ ๋ฏธ๋ฆฌ ํ์ํ ์ ์๋ค. ์ด๋ด ๋ ํ๋ก์ ํจํด์ ์ ์ฉํ๋ฉด ๋๋ค. ํด๋ผ์ด์ธํธ์๊ฒ ํ๊น์ ๋ํ ๋ ํผ๋ฐ์ค๋ฅผ ๋๊ฒจ์ผ ํ๋๋ฐ, ์ค์ ํ๊น ์ค๋ธ์ ํธ ๋์ ํ๋ก์๋ฅผ ๋๊ฒจ์ค๋ค. ๊ทธ๋ฆฌ๊ณ ํ.. 2021. 4. 25. [DB] ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค(Transaction Isolation Level) ๊ฐ๋ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ์์ค(isolation level)์ด๋ ๋์์ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ์ฒ๋ฆฌ๋ ๋, ํธ๋์ญ์ ๋ผ๋ฆฌ ์ผ๋ง๋ ์๋ก ๊ณ ๋ฆฝ๋์ด ์๋์ง๋ฅผ ๋ํ๋ด๋ ๊ฒ์ด๋ค. ์ฆ, ํน์ ํธ๋์ญ์ ์ด ๋ค๋ฅธ ํธ๋์ญ์ ์ ๋ณ๊ฒฝํ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์๋๋ก ํ์ฉํ ์ง ๋ง์ง๋ฅผ ๊ฒฐ์ ํ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ACID ํน์ง๊ณผ ๊ฐ์ด ํธ๋์ญ์ ์ด ๋ ๋ฆฝ์ ์ธ ์ํ์ ํ๋๋ก Locking์ ํตํด, ํธ๋์ญ์ ์ด DB๋ฅผ ๋ค๋ฃจ๋ ๋์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ๊ด์ฌํ์ง ๋ชปํ๋๋ก ๋ง๋ ๊ฒ์ด ํ์ํ๋ค. ํ์ง๋ง ๋ฌด์กฐ๊ฑด Locking์ผ๋ก ๋์์ ์ํ๋๋ ์๋ง์ ํธ๋์ญ์ ๋ค์ ์์๋๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๊ฒ ๋๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ์ ๋จ์ด์ง๊ฒ ๋๋ค. ํ์ง๋ง, ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํด Locking์ ๋ฒ์๋ฅผ ์ค์ธ๋ค๋ฉด, ์๋ชป๋ ๊ฐ์ด ์ฒ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๋ฐ๋ผ์ ์ต๋ํ ํจ์จ์ ์ธ Lock.. 2021. 4. 23. [DB] ํธ๋์ญ์ (Transaction) ๊ฐ๋ ํธ๋์ญ์ (Transaction)์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๋ ํ๋์ ๋ ผ๋ฆฌ์ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํ ์์ ์ ๋จ์ ๋๋ ํ๊บผ๋ฒ์ ๋ชจ๋ ์ํ๋์ด์ผ ํ๋ ์ผ๋ จ์ ์ฐ์ฐ์ ์๋ฏธํ๋ค. ํธ๋์ญ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์์ ๋ณํ ์ ์ด ๋ฐ ํ๋ณต ์์ ์ ์ฒ๋ฆฌ๋๋ ์์ ์ ๋ ผ๋ฆฌ์ ๋จ์์ด๋ค. ์ฌ์ฉ์๊ฐ ์์คํ ์ ๋ํ ์๋น์ค ์๊ตฌ ์ ์์คํ ์ด ์๋ตํ๊ธฐ ์ํ ์ํ ๋ณํ ๊ณผ์ ์ ์์ ๋จ์์ด๋ค. ์ํ๋ณํ : SQL์ง์์ด(SELECT | INSERT | UPDATE | DELETE)๋ฅผ ํตํด DB์ ์ ๊ทผํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ๊ฐ ๋ณํํ๋ ๊ฒ ์์ ๋จ์ : ์ผ๋ จ์ ์ฐ์ฐ(SQL ๋ช ๋ น๋ฌธ ์งํฉ). ์ฌ๋์ด ์ ํ๋ ๊ธฐ์ค(ํ๋์ ๋ ผ๋ฆฌ์ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํ)์ ๋ฐ๋ผ ์ ์ํจ ํ๋์ ํธ๋์ญ์ ์ค๊ณ๋ฅผ ์ ๋ง๋๋ ๊ฒ์ด ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ๋ง์ ์ด์ ์ ๊ฐ์ ธ๋ค.. 2021. 4. 23. [Web] param vs query vs body ๊ฐ๋ Request ๊ฐ์ฒด๋ API๋ฅผ ์ปจํธ๋กคํ๊ธฐ ์ํ ๋ฉ์๋๋ก ์๋ ์ธ๊ฐ์ง๋ฅผ ๋ด๊ณ ์๋ค. param query body req.param ์ฃผ์์ ํฌํจ๋ ๋ณ์๋ฅผ ๋ด๋๋ค. ์๋ฅผ ๋ค์ด https://naver.com/post/12345 ๋ผ๋ ์ฃผ์๊ฐ ์๋ค๋ฉด 12345๋ฅผ ๋ด๋๋ค. ์๋ฒ์์ Path Variable ๋ก ์นญํ๋ค. req.query ์ฃผ์ ๋ฐ๊นฅ, ? ์ดํ์ ๋ณ์๋ฅผ ๋ด๋๋ค. ์๋ฅผ ๋ค์ด https://naver.com/post?post_id=12345 ์ผ ๊ฒฝ์ฐ Node.js๋ฅผ ๋ด๋๋ค. &๋ก ์ฐ๊ฒฐํ์ฌ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธธ ์ ์๋ค. https://naver.com/post?post_id=1235&key=value ์๋ฒ์์ Query parameter ๋ก ์นญํ๋ค. req.body XML, JSON, Multi.. 2021. 4. 18. [DB] ์บ์, Redis ์บ์๋? ํ๋ฒ ์ฝ์(์ฒ๋ฆฌํ) ๋ฐ์ดํฐ๋ฅผ ์์๋ก ์ ์ฅํ๊ณ ํ์์ ๋ฐ๋ผ ์ ์ก,๊ฐฑ์ ,์ญ์ ํ๋ ๊ธฐ์ ๋ก ๋ณดํต์ ๋ฐ์ดํฐ์ ๋ณด๊ด์ฅ์๋ก ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋์คํฌ์์ ์ ๋ณด๋ฅผ ์ป์ด์ค๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋น ๋ฅธ I/O์ฑ๋ฅ์ ์ป์ ์ ์์ผ๋ ์๋ฒ๊ฐ ๋ค์ด๋๊ฑฐ๋ ์ฌ๋ถํ ๋๋ ๊ฒฝ์ฐ ์ฌ๋ผ์ง๋ ์ฑ๊ฒฉ์ ํ๋ฐ์ฑ์ ๊ฐ์ง๊ณ ์์ด ์์์ ์ผ๋ก ๋ณด๊ดํ ์ ์๋, ๋ง ๊ทธ๋๋ก ์์์ ์ผ๋ก ๋ณด๊ดํ๊ณ ๋น ๋ฅด๊ฒ ๊ทธ ์ ๋ณด์ ์ ๊ทผํ๊ธฐ ์ํ ์ฉ๋๋ก ์ฌ์ฉํด์ผ ํ๋ค. ๋ฌผ๋ก ์ ๋ณด์ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ๋ณ๋์ ๋์คํฌ๋ฐฑ์ ๋ฐ TTL๋ฑ์ ์ค์ ์ผ๋ก ์๊ตฌ๋ณด๊ด์ด๋ ์ค๋๊ธฐ๊ฐ ์ ์ง๊ฐ ๊ฐ๋ฅํ๋ค. ๋จ ์ด๋ฐ ์ค์ ๋ค์ด ๊ผญ ํ์ํ๋ค๋ฉด Cache๋ฅผ ์ ์ฉํ๋๊ฒ ๋ง๋์ง ํ ๋ฒ๋ ํ๋น์ฑ์ ๊ฒํ ํด ๋ณด๋๊ฒ ์ข๊ฒ ๋ค. ๋ชฉ์ ์๋ฒ๊ฐ ๋ถํ์ํ ํธ๋ํฝ์ ์ค์ผ ์ ์๊ณ , ๊ทธ๋ก ์ธํด ์น์ดํ๋ฆฌ์ผ์ด์ .. 2021. 4. 18. [DB] Connection Pool ๊ฐ๋ DBCP(Database Connection Pool)์ ๋ค์์ HTTP ์์ฒญ์ ๋ํ Thread๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ๋ฐฉ์์ ๋งํ๋ค. (WAS์ DB ์๋ฒ๊ฐ ์ด์) Connection Pool์ ์ฌ์ฉํ์ง ์๊ณ WAS์์ DB์๋ฒ์ ์ ๊ทผ์ ์์ํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋จ๊ณ DB ์๋ฒ ์ ์์ ์ํด JDBC ๋๋ผ์ด๋ฒ๋ฅผ ๋ก๋ํ๋ค. DB ์ ์ ์ ๋ณด์ DriverManager.getConnection() Method๋ฅผ ํตํด DB Connection ๊ฐ์ฒด๋ฅผ ์ป๋๋ค. Connection ๊ฐ์ฒด๋ก ๋ถํฐ ์ฟผ๋ฆฌ๋ฅผ ์ํํ๊ธฐ ์ํ PreparedStatement ๊ฐ์ฒด๋ฅผ ๋ฐ๋๋ค. executeQuery๋ฅผ ์ํํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๋ก ResultSet ๊ฐ์ฒด๋ฅผ ๋ฐ์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค. ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋๋ฉด ์ฒ๋ฆฌ์ ์ฌ์ฉ๋ ๋ฆฌ์์ค๋ค์ c.. 2021. 4. 18. [Web] CORS(Cross-Origin Resource Sharing) ๊ฐ๋ ๊ต์ฐจ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์ (Cross-Origin Resource Sharing, CORS)๋ ์ถ๊ฐ HTTP ํค๋๋ฅผ ์ฌ์ฉํ์ฌ, ํ ์ถ์ฒ์์ ์คํ ์ค์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค๋ฅธ ์ถ์ฒ์ ์ ํํ ์์์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ๋๋ก ๋ธ๋ผ์ฐ์ ์ ์๋ ค์ฃผ๋ ์ฒด์ ์ด๋ค. ๋ณด์ ์์ ์ด์ ๋ก, ๋ธ๋ผ์ฐ์ ๋ ์คํฌ๋ฆฝํธ์์ ์์ํ ๊ต์ฐจ ์ถ์ฒ HTTP ์์ฒญ์ ์ ํํ๋ค. ์ถ์ฒ๋? ๋๋ฉ์ธ(ํธ์คํธ), ํ๋กํ ์ฝ, ํฌํธ๊ฐ ๋ค๋ฅผ ๋ ์ถ์ฒ๊ฐ ๋ค๋ฅด๋ค๊ณ ๋งํ๋ฉฐ, ์ด๋ ๊ต์ฐจ ์ถ์ฒ HTTP ์์ฒญ์ ์คํํ๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ์ ์ถ์ฒ์ ๋์ผํ ๋ฆฌ์์ค๋ง ๋ถ๋ฌ์ฌ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ์ถ์ฒ์ ๋ฆฌ์์ค๋ฅผ ๋ถ๋ฌ์ค๋ ค๋ฉด ๊ทธ ์ถ์ฒ์์ ์ฌ๋ฐ๋ฅธ CORS ํค๋๋ฅผ ํฌํจํ ์๋ต์ ๋ฐํํด์ผ ํ๋ค. ํด๊ฒฐ(ํ์ฉ) ๋ฐฉ๋ฒ XMLHttpRequest์ Fetch API๋ ๋์ผ ์ถ์ฒ.. 2021. 4. 18. [DB] ์ ๊ทํ ์ด์ ํ์(anomaly) ํ ์ด๋ธ๋ด์ ๋ฐ์ดํฐ ์ค๋ณต์ฑ์ ์ํด์ ๋ฐ์๋๋ ๋ฐ์ดํฐ ๋ถ์ผ์น ํ์. = ์ ํธ๋ฆฌ๋ทฐํธ๋ค ๊ฐ์ ์กด์ฌํ๋ ์ฌ๋ฌ ์ข ์๊ด๊ณ๋ฅผ ํ๋์ ๋ฆด๋ ์ด์ ์ ํํํ๊ธฐ ๋๋ฌธ์ ๋ํ๋๋ ๋ฐ์ดํฐ ๋ถ์ผ์น ํ์ ๊ฐฑ์ ์ด์, ์ฝ์ ์ด์, ์ญ์ ์ด์์ผ๋ก ๊ตฌ์ฑ๋๋ค. ๊ฐฑ์ ์ด์ (Modification Anomaly) : ๋ฐ๋ณต๋ ๋ฐ์ดํฐ ์ค์ ์ผ๋ถ๋ฅผ ๊ฐฑ์ ํ ์ ๋ฐ์ดํฐ์ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ๋ค. ์ฝ์ ์ด์ (Insertion Anomaly) : ๋ถํ์ํ ์ ๋ณด๋ฅผ ํจ๊ป ์ ์ฅํ์ง ์๊ณ ์๋ ์ด๋ค ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋ค. ์ญ์ ์ด์ (Deletion Anomaly) : ํ์ํ ์ ๋ณด๋ฅผ ํจ๊ป ์ญ์ ํ์ง ์๊ณ ์๋ ์ด๋ค ์ ๋ณด๋ฅผ ์ญ์ ํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋ค. ์ด์ ํ์์ ์ข ์๊ด๊ณ๋ฅผ ๋ถ์ํ์ฌ ์ฌ๋ฌ ๊ฐ์ ๋ฆด๋ ์ด์ ์ผ๋ก ๋ถํดํ๋ ์ ๊ทํ๋ฅผ ํตํด ๋ฐฉ์งํ .. 2021. 4. 11. ์ด์ 1 2 3 4 5 6 ๋ค์