์์ ๊ฐ์ด ์ด๋ค ์๋น์ค์ ๋ํ ํ์๊ฐ์ ์ ์ํํ๊ฑฐ๋ ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ํํ์๊ฒฝ์ฐ ์ธ์ฆ ๊ด๋ จ ๋ฉ์ผ์ด ๋ฐ์ก๋๋ ๊ฒ์ ์์ฃผ ํ์ธํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์์ ๊ฐ์ด ์ธ์ฆํ์ธ ๋ฒํผ์ ํด๋ฆญํ์๋ ์ด๋ ํ ๋์์ ํ๋์ง ๊ถ๊ธํ์์ง ์์ผ์ ๊ฐ์? ์์ ๊ฐ์ ์ธ์ฆ ๋ฒํผ์ ๋งํฌ ์๋ฆฌ๋จผํธ๋ก ๋์ด์์ผ๋ฉฐ ์ผ๋ฐ์ ์ธ GET ์์ฒญ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ URI์๋ ๋ค์๊ณผ ๊ฐ์ ์ด๋ ํ ํํ์ ๋ฌธ์์ด์ด ํฌํจ๋๊ฒ ๋ฉ๋๋ค.
a2RldmtyQGdtYWlsLmNvbTp5Rm5iTUtrblZrRW85ckdxTVlmTGtWNE03UUtMTldXWg==
์์ ๊ฐ์ด ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ Base64๋ก ์ธ์ฝ๋ฉ๋ ๋ฐ์ดํฐ์ด๋ฉฐ ํฌ๋กฌ ๊ฐ๋ฐ์๋๊ตฌ์ ์ฝ์์ ํตํด ์ด ์์คํค ๋ฌธ์์ด์ ๋์ฝ๋ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์์ด ๋ฐ์ดํฐ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
atob("a2RldmtyQGdtYWlsLmNvbTp5Rm5iTUtrblZrRW85ckdxTVlmTGtWNE03UUtMTldXWg==")
'kdevkr@gmail.com:yFnbMKknVkEo9rGqMYfLkV4M7QKLNWWZ'
์ ์ด๋ฉ์ผ ์ฃผ์์ ํจ๊ป ์ด๋ ํ ๋ฌธ์์ด์ ํฌํจํ๊ณ ์์ต๋๋ค. ์๋ง๋ ์ ์์์๋ ๋ฌธ์์ด์ ์ํธํ๋ ์ธ์ฆ ์ ๋ณด์ผ ๊ฒ์ ๋๋ค. ์ธ์ฆ ์ ๋ณด์ GET ์์ฒญ์ ํฌํจ๋ ์ด๋ฉ์ผ ์ฃผ์๊ฐ ๋์ผํ์ง๋ฅผ ๋ด๋ถ์ ์ผ๋ก ๊ฒ์ฆํ๊ฒ ์ฃ . ์ด๋ฌํ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ Base64๋ก ์ธ์ฝ๋ฉํ์ฌ ์ ์กํ๊ฒ ๋๋ ๊ฒ์ผ๊น์? ์์ ํ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ณ ์ํ๋ ๋ชฉ์ ์ ์์ต๋๋ค.
์์คํค ์ฝ๋ โ
์ฌ๋๋ค์ ์ ๋ง์ ๋ฌธ์์ ํํ๋ฅผ ์ฝ๊ณ ๊ตฌ๋ถํ ์ ์์ง๋ง 0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ์ปดํจํฐ ์์คํ ์ ์์คํ ์ ๋ฐ๋ผ 0๊ณผ 1์ ์ฝ๊ณ ๊ตฌ๋ถํ๋ ๋ฐฉ์์ด ๋ค๋ฅผ ์ ์์ต๋๋ค. ์์คํ ์ ๋ฐ์ ์ ๋ฐ๋ผ ์์คํค ์ฝ๋๋ถํฐ ์ ๋์ฝ๋ ๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ๊ฐ์ง ๋ฌธ์ ์กฐํฉ์ด ํ์ฅ๋๊ณ ์์ต๋๋ค. ๋๋ถ๋ถ์ ๋ฌธ์ ํ์์ ์์คํค ์ฝ๋๋ฅผ ๊ธฐ์ด๋ก ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์ ์์คํค ์ฝ๋ ์ค ์ผ๋ถ ๋ฌธ์ ์งํฉ์ ๊ฑฐ์ ๋ชจ๋ ์์คํ ์์ ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ ๋ฌธ์์ ๋๋ค. ๊ทธ๋ฌํ ๋ฌธ์๋ค์ ๋ชจ์ ๋ง๋ค์ด์ง๋๊ฒ Base64 ์ธ์ฝ๋ฉ์ ๋๋ค.
Base64 ์ด๋ฏธ์ง โ
๋ธ๋ผ์ฐ์ ์์๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ ๋ฟ๋ง ์๋๋ผ Base64๋ก ์ด๋ฃจ์ด์ง ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ํํํ ์ ์์ต๋๋ค.
<img data-src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAAAXNSR0IArs4c6QAAA+VJREFUeF7tnclu4zAUBEf//9EeYG6SAhUKTdJUpnMV1663kbKd4/P5fP70bxsFjgLZhsW/hRTIXjwKZDMeBVIguymw2XqaQwpkMwU2Ww56yHEcS5d8PRZd56djU9p+9mZx/XQOKZCxiAoELiK+bXBX3A1ZXw7JMRByOevgFPNTC6b10vx2PzeBL8BxPTaH0IB2AyRIgVwUJcEsAGtBBVIgqY2d+luD1kmdzgm0G+pPIdF6jB2P1jd9f2kOSQXSFiSrogIBEyILtAJai52dw+L91UPOV0MkqDUAHQHeBsRaOAlIgi0PyQVSD4nKwnoIHP1Xu3SBfBkIxfgUEI2/2uC2PxiSYAVyeb8w24IKRN5lFchZMDrH4ME3LXupzqfn5AH2+XU+FEC+r6D9xCG0QJ7PIRZAgcBlYz1EmpQNSRSj/7uQJfXWzUnw2c/1gmUH9FibQ+T8uvlswWl8vWDZoUAG3zRI/W/NC+S3AUktIu1PST8tM9P1je6Pd1mjJ7TjFYhVbHL7ApkssB2+QOBykQTFKkKerNPLS8oxtJ/0oKn7jz6HFMjzF5xQnwJxPoKCyghw8+ACeTkQunqwFmTHG53kR49HOQv1sR5iBbQLJIHo+ej57Hhx+wJxL6hGG0ScQ+ohkwFaD6G62p4baDxKuWSxuz+PPYQELJDz78GRQRQIfK7MhmQSnJ4XyNuBUBlnQxjV4TZnUPt0Ptr/8PEpqdOCCmTsb4jqF1SUtG0MJgu3BkEGYuej+eshg7+FawHZJK3Hp5A1egGph5EH0Pir+1sPwpBVIM82PjpEF8ji77tQCCuQtwEhorOfz84JFOPT+a0+6CF2wNHtU0Gof4FIYiRoWjUVSIE8KoAhy1qo1PvWPLXYtAxN9xvPbw+GqeDUv0BAgdRiCADlALpLov72YJvutx5yIRILIu/KhhuEDVkUUqxHkAXTc/KgFNDy8QvEvc8gA6HnZLC6yqqHuB88s3oViPyvgeQB9Hy6h9iqZHVMtzkABQu/REoeE3tIgTx/DouqsJvBpEm9QArkZFQ2Ztv2NuSRgf66kDVaUAopJDDlHALw+pBVIGFVYS2QLKpACoSi0uNzMrDXhSyK4bRh8igaP6LxQ2dc7+5lLwmGGxzs4SkgXG+BfPc/mTZkhZ/D2t5D0gXaGD/6LowOfrQ/CkHUf7iH2AlJACs4AbXro5xFZbydr0BAsQKRVZD1IGuxrwNiN2jbW8GtgGnIsSFSt7dlrxXYti+QzT+XRRZWD7EmL9vXQ0YX0hJAm58VwHfqFWytAgWyVm+crUBQorUNCmSt3jhbgaBEaxsUyFq9cbYCQYnWNvgLqC4vPjN7siAAAAAASUVORK5CYII=" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAAAXNSR0IArs4c6QAAA+VJREFUeF7tnclu4zAUBEf//9EeYG6SAhUKTdJUpnMV1663kbKd4/P5fP70bxsFjgLZhsW/hRTIXjwKZDMeBVIguymw2XqaQwpkMwU2Ww56yHEcS5d8PRZd56djU9p+9mZx/XQOKZCxiAoELiK+bXBX3A1ZXw7JMRByOevgFPNTC6b10vx2PzeBL8BxPTaH0IB2AyRIgVwUJcEsAGtBBVIgqY2d+luD1kmdzgm0G+pPIdF6jB2P1jd9f2kOSQXSFiSrogIBEyILtAJai52dw+L91UPOV0MkqDUAHQHeBsRaOAlIgi0PyQVSD4nKwnoIHP1Xu3SBfBkIxfgUEI2/2uC2PxiSYAVyeb8w24IKRN5lFchZMDrH4ME3LXupzqfn5AH2+XU+FEC+r6D9xCG0QJ7PIRZAgcBlYz1EmpQNSRSj/7uQJfXWzUnw2c/1gmUH9FibQ+T8uvlswWl8vWDZoUAG3zRI/W/NC+S3AUktIu1PST8tM9P1je6Pd1mjJ7TjFYhVbHL7ApkssB2+QOBykQTFKkKerNPLS8oxtJ/0oKn7jz6HFMjzF5xQnwJxPoKCyghw8+ACeTkQunqwFmTHG53kR49HOQv1sR5iBbQLJIHo+ej57Hhx+wJxL6hGG0ScQ+ohkwFaD6G62p4baDxKuWSxuz+PPYQELJDz78GRQRQIfK7MhmQSnJ4XyNuBUBlnQxjV4TZnUPt0Ptr/8PEpqdOCCmTsb4jqF1SUtG0MJgu3BkEGYuej+eshg7+FawHZJK3Hp5A1egGph5EH0Pir+1sPwpBVIM82PjpEF8ji77tQCCuQtwEhorOfz84JFOPT+a0+6CF2wNHtU0Gof4FIYiRoWjUVSIE8KoAhy1qo1PvWPLXYtAxN9xvPbw+GqeDUv0BAgdRiCADlALpLov72YJvutx5yIRILIu/KhhuEDVkUUqxHkAXTc/KgFNDy8QvEvc8gA6HnZLC6yqqHuB88s3oViPyvgeQB9Hy6h9iqZHVMtzkABQu/REoeE3tIgTx/DouqsJvBpEm9QArkZFQ2Ztv2NuSRgf66kDVaUAopJDDlHALw+pBVIGFVYS2QLKpACoSi0uNzMrDXhSyK4bRh8igaP6LxQ2dc7+5lLwmGGxzs4SkgXG+BfPc/mTZkhZ/D2t5D0gXaGD/6LowOfrQ/CkHUf7iH2AlJACs4AbXro5xFZbydr0BAsQKRVZD1IGuxrwNiN2jbW8GtgGnIsSFSt7dlrxXYti+QzT+XRRZWD7EmL9vXQ0YX0hJAm58VwHfqFWytAgWyVm+crUBQorUNCmSt3jhbgaBEaxsUyFq9cbYCQYnWNvgLqC4vPjN7siAAAAAASUVORK5CYII=" data-loaded="true">
์นํฉ์ url-loader๋ ์์ ๊ฐ์ Base64 ํ์์ URI๋ก ๋ณํํฉ๋๋ค.
HTTP ๊ธฐ๋ณธ ์ธ์ฆ โ
์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ Authorization ํค๋์ ํฌํจํ์ฌ ์ ๋ฌํ๋ HTTP ๊ธฐ๋ณธ ์ธ์ฆ์ ๊ฒฝ์ฐ์๋ Base64 ์ธ์ฝ๋ฉ์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ HTTP ํค๋์ ๊ฐ์ด ์์คํค ์ฝ๋๋ก ์ธ์ฝ๋ฉ๋์ด์ผํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ๋ผ์, ์์คํค ์ฝ๋๋ก ํํํ ์ ์๋ ๋ฐ์ดํฐ๋ ์ ๋ฌํ ์ ์๋๋ก Base64 ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
Authorization: Basic bWFtYm86cGFzc3dvcmQ=
JWT Base64Url โ
์ต๊ทผ ์ฌ์ฉ์ ์ธ์ฆ์ ์ํด ๋ง์ด ๋์ ํ๋ JWT(JSON Web Token)๋ ํ์ด๋ก๋์ ์๊ทธ๋์ฒ ๋ถ๋ถ์ Base64Url(URL Safe Base64) ๋ก ์ธ์ฝ๋ฉํฉ๋๋ค. JWT๋ฅผ Base64๋ก ์ธ์ฝ๋ฉํ๋ ์ด์ ๋ ํ ํฐ์ด URL ํ๋ผ๋ฏธํฐ๋ก ์ ์ก๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋๋ง์น๋ฉฐ โ
Base64๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ ๋ํด์ ๊ฐ๋จํ๊ฒ ์์๋ณด์์ต๋๋ค. ์ด๋ณด ๊ฐ๋ฐ์๋ถ๋ค ๋ฟ๋ง ์๋๋ผ ์ ์ฒ๋ผ Base64์ ๋ํด์ ์ธ์งํ๊ณ ์์๋ ๋ถ๋ค์๊ฒ๋ ๋์์ด ๋์์ผ๋ฉด ํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
Base64์ ๋ํด์ ์์ธํ ๋ด์ฉ์ ์๊ณ ์ถ๋ค๋ฉด RFC4648์ ์ฐธ๊ณ ํ์ธ์.