๐ค Backend
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNCfud%2FbtsD3lRDwDM%2FTJg4IRXDdkabAjJeajbL5k%2Fimg.png)
@DataJpaTest๋ฅผ ์ด์ฉํ Repository ํ
์คํธ ์ค ๋ณธ ์ดํ๋ฆฌ์ผ์ด์
์คํ์์ ๋ฐ์ํ์ง ์๋ DDL์์ ์์ธ๊ฐ ๋ฐ์ํ๋ค. H2 ↔๏ธ MySQL ๋ฌธ๋ฒ ์ฐจ์ด๋ก ์ธํด ํ
์ด๋ธ์ด ์ ๋๋ก ์์ฑ๋์ง ์๋ ๊ฒ์ผ๋ก ๋ณด์ฌ์ application-test.properties ๋ฅผ ๊ณ์ ์์ ํ์ง๋ง ํด๊ฒฐ๋์ง ์์๋ค. ๋ฌธ๋, ์ง๋ ๋ฒ์๋ @DataJpaTest ํ
์คํธ์์ ๋ฐ์ํ๋ ์๋ฌ๋ฅผ @AutoConfigureTestDatabase์ผ๋ก ํด๊ฒฐํ ๊ธฐ์ต์ด๋์ ์๋ํ์๊ณ ํด๊ฒฐ๋์๋ค. ๊ทธ๋๋ ๋๋ฒ๊น
๊ณผ์ ๊ธฐ๋ก์ ๋ฏธ๋ค๋๊ณ ์์๋๋ฐ, ์ด ์ฐธ์ ๋ธ๋ก๊น
ํ๊ณ ์ฅ๊ธฐ ๊ธฐ์ต์ผ๋ก ๊ฐ๋ณด์. ๋ฌธ์ ๋ถ์ ์๋ํ ๋๋ง๋ค ๋ค์ํ ์์ธ๊ฐ ๋ฐ์ํ๊ณ ์ธํฐ๋ท์๋ ๋ค์ํ ์์ธ ์ผ์ด์ค๊ฐ ์๋๋ฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ ๋ฌธ์ ์ด๊ฑฐ๋ DDL ํน์ SQL ๋ฌธ๋ฒ ์ค๋ฅ๋ค. ๊ณตํต์ ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbamrSe%2FbtsCU18PJ7m%2F4Vds9aSDAew5885n1BAKKk%2Fimg.png)
๋ค ๋ชจ๋ฅด๊ฒ ๊ณ , ๊ฐ์ฅ ์ด์์ ์ธ ์ํคํ
์ฒ๋ง ๋ณด๊ณ ์ถ์ ์ฌ๋์ ํ์ค์ ์ธ ์๊ท๋ชจ ์ํคํ
์ฒ ์น์
์ ๋ณด๋ฉด ๋๋ค. ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋๋ฅผ ์ฌ์ฉํ ๋ ์์ด๋ก ํ๋ ํ๊ตญ์ด๋ก ํ๋ ๊ธฐ๋ฅ ์ดํดํ๊ธฐ๋ ์ด๋ ต๊ณ ๊ฐ์ด๋๊ฐ ๋ณต์กํ๋๋ผ๋ AWS ์ฌ์ฉํ๋๋ฐ๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์ด์ ๊ฐ ์๋ค. ๋ง์ ํ์ฌ๊ฐ AWS๋ฅผ ์ฌ์ฉํ๊ณ ์์ด์ ๊ฒฝํ์ถ์ ๊ฒ๋ ์์ง๋ง, ํ์์ผ๋ก์ ๊ฐ๊ฒฉ์ด ํฐ ์ด์ ์๋ค. AWS์๋ ์ ๋ง์ ์๋น์ค๋ค์ด ์กด์ฌํ๊ณ ์๋ฒฝํ ์ํคํ
์ฒ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด ๋ง์ ๊ธฐ๋ฅ๋ค์ ์ถ๊ฐํ ์ ์๋ค. ํ์ง๋ง ์์ธ๋ก ์ผ๋ถ ์๋น์ค๋ฅผ ์ ์ธํ๊ณ ๋ ํฉ๋ฆฌ์ ์ธ ๊ฐ๊ฒฉ์ด๊ฑฐ๋ ์ผ์ ๋ฒ์ ๋ด์์ ๋ฌด๋ฃ์ธ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. NCP ์ํคํ
์ฒ NCP๋ ํ๊ตญ ํด๋ผ์ฐ๋์ด๊ธฐ๋ ํ๊ณ ํ๋ฐ์ฃผ์๋ผ ๊ทธ๋ฐ์ง ๋ฌธ์ํ๊ฐ ๊ต์ฅํ ์ ๋์ด์๋ค. ๊ฐ๋ AWS์ ํ๊ตญ ๋ํ๋จผํธ๋ฅผ ๋ณด๋ฉด ํ๊ตญ์ด๋ฅผ ์ฝ๊ณ ์๋๋ฐ๋ ์ดํด๊ฐ ์๋๊ณ ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsVW4H%2FbtsCLocN9e9%2Fb1Qk7zOKiLxtNsGfJTk2Nk%2Fimg.png)
๋ํ๋ง 14๊ธฐ์์ ์ฐธ์ฌ ์ค์ธ ํ๋ก์ ํธ์์ ๋ฐฑ์๋ ๋ฆฌ๋ ๋ถ์ด ์ํฐํฐ์ id๋ฅผ UUID, ULID๋ก ์ค์ ํ ๊ฒ์ ๋ณด์๋ค. ๋ IDENTITY๋ก ์ค์ ํ์ฌ MySQL์ด AUTO_INCREMENT๋ก ๊ด๋ฆฌํ๋๋ก ์์ํ๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด ๋ฐฉ์๊ณผ ๋๋นํด์ ์ด๋ค ์ฅ์ ์ด ์๊ธธ๋ ์ฌ์ฉํ๋์ง ์์๋ณด์๋ค. AUTO_INCREMENT ์ ๋ต์ ๋จ์ ์ธ๋ถ์์ ์์ธกํ๊ธฐ ์ฌ์ด PK PK๊ฐ ์ ํ์ ์ผ๋ก ์ฆ๊ฐํ๋ ์ ์์ด๊ธฐ ๋๋ฌธ์, ํน์ ๋ฐ์ดํฐ์ PK๋ฅผ ์์ธกํ๊ธฐ ์ฌ์์ง๋ค. ์ค์ ๋ก request๋ค์ ํ๋ผ๋ฏธํฐ๋ฅผ ํ
์คํธํ ๋ ์ข
์ข
๋๊ผ๋ ๊ฒ์ด๋ค. ํ์ฌ ์ ์ ์ id 2000์ด๋ฉด 1 ~ 1999๊น์ง์ id๋ฅผ ๊ฐ์ง ์ ์ ๊ฐ ์กด์ฌํ ํ๋ฅ ๋ ๋์ ๊ฒ์ด๋ค. ์ด๋ ๋จ์ํ ๋
ธ์ถ๋๋ค์ ๋ฌธ์ ๋ฅผ ๋์ด SQL Injection ๊ณต๊ฒฉ์๋ ์ทจ์ฝํด์ง๋ค. DB์ ์์กด์ ์ธ PK ๊ฐ๋ฐ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyT4tP%2FbtsCQ3yrcEL%2FfTV4WxH15wKyrbTmuPdcvK%2Fimg.png)
์ฌ์ค ๋ฐฑ์๋ ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ์ธํ๋ผ ๋จ์์๋ง ๋ณด์๊ณผ ํดํน ๋ฐฉ์ด๋ฅผ ์กฐ์ฌํ์ง๋ง, ์ดํ๋ฆฌ์ผ์ด์
๋จ์์์ ๋ณด์์ ํฌ๊ฒ ์์๋ณธ ์ ์ ์์๋ ๊ฒ ๊ฐ๋ค. ํ๋ ์์ํฌ์์ ๊ธฐ๋ณธ์ ์ธ ์ค์ ์ ์ ๋ถ ๋์ด ์์ด์์ง๋ง, ์๊ณ ์์ง๋ง ์ํ๋ ๊ฒ์ด ์๋๋ผ ์์ ๋ชจ๋ฅด๋ ๊ฒ์ ๋ฌธ์ ๊ฐ ๋ ์ ์์ ๊ฒ ๊ฐ๋ค. ์ต๊ทผ ์ฐธ์ฌํ ๋ชจ ๊ธฐ์
์ ์ฑ์ฉ ํ๊ธฐ ํ
์คํธ์์ ์ด์ ๊ด๋ จ๋ ๋ฌธ์ ๊ฐ ๋์์๊ณ , ์ต๊ทผ ์งํ ์ค์ธ ํ๋ก์ ํธ์์ ์๋ฒ ๋ฆฌ๋๊ฐ UUID/ULID๋ฅผ DB PK๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๋ณด๊ณ ์ฐพ์๋ณด๋ ์ค ์ด์ ์ฐ๊ด๋์ด ํ ๋ฒ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค. SQL Injection ์๋ ์ ๋ช
ํด ๋ค๋ค ํ ๋ฒ์ฏค์ ๋ค์ด๋ดค์ํ
๋ฐ, ์์์ SQL๋ฌธ์ ์ฃผ์
ํ๊ณ ์คํ๋๊ฒ ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋น์ ์์ ์ธ ๋์์ ํ๋๋ก ์กฐ์ํ๋ ํ์์ด๋ค. ๋ค์ํ ๊ณต๊ฒฉ๋ฒ์ด ์์ง๋ง, ๊ฐ์ฅ ๋ํ์ ์ธ Error..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkSApp%2FbtrKzKFOZu8%2FdXi91JiH0kXFCjFRkLFOxk%2Fimg.png)
Install $ sudo apt update && sudo apt-get -y upgrade $ sudo apt-get install -y mariadb-server $ sudo mysql Configuration Environment setting $ sudo mysql mysql> use mysql mysql> SHOW VARIABLES LIKE 'c%'; (utf8 OR utf8mb4) mysql> SELECT now(); (KST ์ด์ฌ์ผํจ) mysql> exit; $ sudo timedatectl set-timezone 'Asia/Seoul' $ date $ sudo service mysql restart User setting $ sudo mysql mysql> use mysql; mysql..