๐์ค๋ ๋ฐฐ์ด ๊ฒ
๋ฆฌ์กํธ
- jsx XSS ๊ณต๊ฒฉ ๋ฐฉ์ง
const title = response.potentiallyMaliciousInput;
const element = <h1>{title}</h1>;
React DOM์์๋ JSX์ ์ฝ์ ๋ ๋ชจ๋ ๊ฐ์ ๋ ๋๋งํ๊ธฐ ์ ์ ์ด์ค์ผ์ดํํ๊ธฐ ๋๋ฌธ์ ๋ช ์์ ์ผ๋ก ์์ฑ๋์ง ์์ ๋ด์ฉ์ ์ฃผ์ ๋์ง ์๋๋ค. ๋ชจ๋ ํญ๋ชฉ์ ๋ ๋๋ง ๋๊ธฐ ์ ์ ๋ฌธ์์ด๋ก ๋ฐํํ๊ธฐ ๋๋ฌธ์ XSS ๊ณต๊ฒฉ์ ๋ฐฉ์งํ ์ ์๋ค.
* ์ด์ค์ผ์ดํ๋?
THML ์ํฐํฐ์ ๊ฐ์ ํน์ ๋ฌธ์๋ฅผ HTML๋ก ๋ณํํ๋ ํ์
React.js์ Next.js์ ์ฐจ์ด
- React.js๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, Next.js๋ ํ๋ ์์ํฌ์ด๋ค.
-React.js๋ CSR(Client Side Rendering)์ ํ๊ณ , Next.js๋ SSR(Server Side Rendering)์ ํ๋ค.
NextJS
: ReactJS๋ฅผ ๋ฐํ์ผ๋ก ๋ง๋ค์ด์ง ํ๋ ์์ํฌ์ด๋ค.
-> ๋ฆฌ์กํธ์ SEO๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅ
- Page ํด๋
: Pages ์ ๋ค์ด์๋ ํ์ผ๋ช ์ผ๋ก ๋ผ์ฐํฐ ์์ฑ
์) Pages ํด๋ ์์ Hello ๋ผ๋ ์ด๋ฆ์ ํ์ผ์ด ์กด์ฌ -> '/hello'๋ผ๋ ๋ผ์ฐํฐ๋ฅผ ๊ฐ๊ฒ ๋๋ค.
- Link
๋ฆฌ์กํธ์์๋ <a>ํ๊ทธ๋ฅผ ๋์ ํด์ react-router-dom์ <Link> ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค.
NextJS์์๋ <Link>ํ๊ทธ๋ก ๊ฐ์ผ <a>ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ๋์ className ๋ฑ์ ์์ฑ์ ์ง์ ํ ๋ a ํ๊ทธ์๊ฒ ์ง์ ํด์ค์ผ ํ๋ค.
...
return (
<>
<Link herf="/">
<a className="example">Example</a>
</Link>
</>
);
- _app.tsx
: ๊ฐํ์ด์ง๋ _appํ์ผ์ ํตํด ๋ ๋๋ง๋๋ค. ์ฆ, pages ํด๋์ ํ์ผ๋ค์ importํด์ ์คํ์ํค๋ ์์ ์ปดํฌ๋ํธ๊ฐ _app
๐ญ๋ฐฐ์ด ์
์ค๋์ ๋ฆฌ์กํธ ๊ณต์๋ฌธ์๋ฅผ ์ฒ์๋ถํฐ ์ฝ๊ธฐ ์์ํ๊ณ , ์ดํ ํํ๋ก์ ํธ์์ nextJS๋ฅผ ์ฌ์ฉํ ๊ฑด์ง React๋ฅผ ์ฌ์ฉํ ๊ฑด์ง ์ ํด์ผํด์ nextJS์ ํน์ง์๋ ๋ญ๊ฐ ์๋์ง ๊ฐ๋จํ๊ฒ ์ดํด๋ณด์๋ค.
๋ฆฌ์กํธ ๊ณต์๋ฌธ์์ ๊ฒฝ์ฐ ์ด๋ฐ๋ถ๋ฅผ ์ฝ์ผ๋ฉด์ ๊ทธ๋๋ ๋๋ถ๋ถ ์๋ ๋ด์ฉ์ด์๋๋ฐ XSS ๊ณต๊ฒฉ ๋ฐฉ์ง์ ๋ํ ๋ด์ฉ์ ์ฒ์์ ๊ณต๋ถํ ๋ ๋ค์ด๋ดค๋ ๋ด์ฉ์ด์๋๋ฐ ์๊ณ ์ง๋๋ ๊ฒ ๊ฐ์์ ๋ค์ ๊ธฐ๋กํด๋ณด์๋ค.
nextJS๋ ์ ๋๋ก ๊ณต๋ถํด ๋ณธ ์ ์ด ํ๋ฒ๋ ์๋๋ฐ ์ด๋ฒ์ ์ ๋ณด๋ฅผ ์ฐพ์๋ณด๋ฉด์ nextJS๊ฐ ํ๋ ์์ํฌ๋ผ๋ ๊ฒ์ ์ฒ์ ์์๊ณ React ๊ธฐ๋ฐ์ด๋ค๋ณด๋ ๋ฌ๋์ปค๋ธ๊ฐ ๊ทธ๋ ๊ฒ ๋์ง ์์์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์ง๋ง ์ ๋๋ก ๊ณต๋ถ๋ฅผ ์์ํด๋ด์ผ ์ ๊ฒ ๊ฐ๋ค. ํ๋ก์ ํธ์ ์ ์ ํ ๊ธฐ์ ์คํ์ ์ ์ ํ๋ ๊ฒ์ ์ฐธ ์ด๋ ค์ด ์ผ ๊ฐ๋ค...
'์ผ์ > Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2023.02.08 (0) | 2023.02.08 |
---|---|
2023.02.07 (0) | 2023.02.07 |
2023.02.03 (0) | 2023.02.03 |
2023.02.01 (0) | 2023.02.01 |
2023.01.31 (0) | 2023.01.31 |