๐กํด๋น ๋ด์ฉ์ pentestqym์ ๋ด์ฉ์ ๋ค์ ํ ๋ฒ ์ ๋ฆฌํ ๋ด์ฉ์ด๋ฉฐ,
๋ชจ๋ ์ ์๊ถ์ ํด๋น ์ฌ์ดํธ์๊ฒ ์์ต๋๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์ ์น ์ปจํ ์ธ ๋ฅผ ์๋น์คํ๊ธฐ ์ํด ์๋ฒ์ธก์์ ์ฌ์ฉ๋ ์ ์๋ ์น ์๋ฒ, ์๋ฒ์ธก ์คํฌ๋ฆฝํธ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ์ ๊ธฐ์ ๋ค์ ๋ํด ์์๋ด ๋๋ค.
๊ฐ์
์๋ฒ ์ธก(Server-Side) ๊ธฐ์ ์ด๋ ํด๋ผ์ด์ธํธ-์๋ฒ ๋ชจ๋ธ์์ ํด๋ผ์ด์ธํธ, ์ผ๋ฐ์ ์ผ๋ก๋ ์ฌ์ฉ์์ ์น ๋ธ๋ผ์ฐ์ ์์ ์คํ๋๋ ๊ธฐ์ ์ ๋งํฉ๋๋ค 1
์๋ฒ์ธก ๊ธฐ์ ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌํ์ ์ํด ์ฌ์ฉ๋๋ ์๋ฒ์ฌ์ด๋ ์คํฌ๋ฆฝํ ์ธ์ด(Ex. PHP), ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (Ex. MySQL), ์น ์๋ฒ ์ํํธ์จ์ด(Ex. Apache) ๋ฑ์ ์๋ฏธํฉ๋๋ค. ์ด๋ฌํ ๊ธฐ์ ์ ์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์ญํ ์ ์ํํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ง์ถคํ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ด๋ฌํ ๋ชฉ์ ์ ๊ธฐ์ ์ ๋ฐ์ ์ผ๋ก ์๋ ํ์ผ(Ex. DOM)์ ๋จ์ํ ๋ณด์ฌ์ฃผ๋๊ฒ์ ๊ทธ์น๋ ์ ์ ์ธ ์น์์ ๋์ ์ผ๋ก ์์ ํ๊ธฐ ์ํ ๊ธฐ์ ์ ๋ฐ์ ์ด๋ผ๊ณ ํ ์ ์๊ฒ ์ต๋๋ค.
์๋ฒ ์ธก ๋์
- ์น ๋ธ๋ผ์ฐ์ → ์๋ฒ HTTP ์์ฒญ
- ์์ ๋ ์์ฒญ์ ์น ์๋ฒ(WAS)์ ๋ฐ์ ์ ์ก๋ฐ์ ๋ฐ์ดํฐ๋ฅผ Server-Side Script์ ์ ๋ฌ
- Nginx, Apache, JBoss ๋ฑ์ด ์ฌ์ฉ๋จ - ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ํ์ฌ DB ๋ฑ์ ๋ฐ์ดํฐ ์ ์ฅ์๋ก ์ง์๋ฅผ ๋ณด๋
- PHP, Pytho ๋ฑ์ด ์ฌ์ฉ๋จ - DB์์ ์ ๋ฌ๋ ๋ณ์๋ฅผ ํตํด ์ง์ ์กฐ๊ฑด์ ์ถฉ์กฑํ ๋ ์ฝ๋์
์ผ๋ก ๋ฐํ 2
- ์ฃผ๋ก Mysql, MSsql, Oracle, Postgresql ๋ฑ์ด ์ฌ์ฉ๋จ - ๋ค์ Server-side Script์ HTML Template์ DB์์ ์ถ์ถ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐฐ์นํจ
- ์๋ฒ์ธก ์คํฌ๋ฆฝํธ๋ ๋ง์ง๋ง์ผ๋ก ์ต์ข
ํ์ด์ง๋ฅผ ์น ์๋ฒ(WAS)์ ๋ฐํ
- ์ต์ข ํ์ด์ง๋ฅผ HTTP ํต์ ์ ํตํด ์น ๋ธ๋ผ์ฐ์ ์ ์๋ต
Web Server(WAS)
์น ์๋ฒ๋ HTTP ์์ฒญ์ ๋ํ ์๋ต์ ์ ๊ณตํ๋ ์ํํธ์จ์ด์ ๋๋ค. ์๋๋ ์ ์ ์ปจํ ์ธ ๋ฅผ ์ ๊ณตํ๋ ์ฉ์ด๋ก ์ฌ์ฉ๋์ง๋ง, ํ๋์ ์ผ๋ก๋ ๋์ ์ปจํ ์ธ ๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ๋ ํฌํจํ ์ ์์ต๋๋ค. ์น ์๋ฒ์ WAS(Web Application Server)๋ ๊ฐ๋ ์ ์ผ๋ก ๊ตฌ๋ถ๋์ง๋ง, ํ์ฌ๋ ๋ ๊ธฐ๋ฅ์ด ํผ๋๋์ด ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ฐ๋ผ์ ์น ์๋ฒ์ WAS์ ์ญํ ์ ์ํฉ์ ๋ฐ๋ผ ๊ตฌ๋ณ๋์ง๋ ์๋๋ค๋ ์ !.
WAS ์๋ฒ ์ข ๋ฅ๋ค
Apache HTTP Server
์คํ์์ค ์น ์๋ฒ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ฉฐ, MPM(Multi-Processing Module)์ ์ด์ฉํ ๋ชจ๋์ ๊ตฌ์ฑ์ ์ง์ํ๋ฏ๋ก ํ์ฅ์ฑ์ด ๋งค์ฐ ๋ฐ์ด๋ ๊ฒ์ด ์ฅ์ 3
ํฌ๋ก์ค ํ๋ซํผ์ ์ง์ํ๊ณ ํ์ฅ์ฑ์ด ๋ฐ์ด๋๋ฉฐ ์ ์ ๊ณผ ๋์ ์น ์ปจํ ์ธ ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. APM(APache Module) ์คํ์๋ Apache, PHP, MySQL(๋๋ MariaDB)๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, LAMP, WAMP ๋ฑ์ผ๋ก ๋ถ๋ฆฌ๊ธฐ๋ ํฉ๋๋ค. 4
NGINX
Apache HTTP ์๋ฒ์ ๋์์ผ๋ก ์ฃผ๋ชฉ๋ฐ๊ณ ์๋ ์คํ์์ค ์น ์๋ฒ ์ํํธ์จ์ด
Apache HTTP ์๋ฒ์ ํ๊ณ๋ฅผ ๊ทน๋ณต(C10K ๋ฌธ์ )ํ๊ธฐ ์ํด ๊ฐ๋ฐํ์์ผ๋ฉฐ, ๋ ์ ์ ๋ฆฌ์์ค๋ก ๋ ๋ง์ ๋์ ์ฐ๊ฒฐ์ ์ฒ๋ฆฌํ ์ ์๊ณ ๋น ๋ฅธ ์ฑ์ฅ์ ์ด๋ฃจ์์ต๋๋ค. NGINX๋ ๋์ ์น ์ปจํ ์ธ ์ฒ๋ฆฌ๋ฅผ ์ํด ๋ค๋ฅธ ํ๋ก๊ทธ๋จ๊ณผ ํจ๊ป ์ฌ์ฉ๋๋ฉฐ, ์์ฅ์์์ ์ ์ ์จ์ด ๊พธ์คํ ์ฆ๊ฐํ๊ณ ์์ต๋๋ค. 5
๊ทธ ์ด์ธ์๋ Google Web Server, IIS, Apache Tomcat ๋ฑ ๋ง์ด ์์ง๋ง, ๋์ถฉ ์ด๋ค ์๋น์ค์ธ์ง๋ง ์์๋ณด๋ ๊ฒ์ด๊ธฐ์ ๋์ด๊ฐ๊ฒ ์ต๋๋ค. ํ์์ ๋ฐ๋ผ ๊ณต๋ถํ์๋ค๋ณด๋ฉด ๊ธ๋ฐฉ ํน์ง์ ์ ์ ์์๊ฒ๋๋ค.
์๋ฒ์ธก ์คํฌ๋ฆฝํธ
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ์ฝ๋๋ก, ์๋ฒ์์ ์คํ๋๋ฉฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๊ฑฐ๋ ์ฌ์ฉ์ ์์ฒญ์ ๋ฐ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ์ํํฉ๋๋ค. ๋ก๊ทธ์ธ, ์จ๋ผ์ธ ์ผํ๋ชฐ, ์ด๋ฉ์ผ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋ฉ๋๋ค.
์ฆ, ์๋ฒ์ธก ์คํฌ๋ฆฝํธ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ ์ฝ๋๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ๊ณผ ์ฌ์ฉ์ ์์ฒญ ์ฒ๋ฆฌ ๋ฑ์ ์ํํฉ๋๋ค.
์๋ฒ์ธก ์คํฌ๋ฆฝํธ๋ ์๋ฒ์์๋ง ์คํ๋๊ณ , ์ฌ์ฉ์๋ ํด๋น ์์ค์ฝ๋๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ๋ฐ๋ฉด ํด๋ผ์ด์ธํธ์ธก ์คํฌ๋ฆฝํธ์ธ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์น ๋ธ๋ผ์ฐ์ ์์ ์คํ๋๋ฉฐ, ์์ค์ฝ๋๊ฐ ๋ก์ปฌPC์ ์ ์ฅ๋์ด ์ฌ์ฉ์๊ฐ ํ์ธํ ์ ์์ต๋๋ค. ์๋ฒ์ธก ์คํฌ๋ฆฝํ ์ธ์ด๋ ์๋ฒ์ธก์์ ๋์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ, ์ฃผ๋ก ์ฌ์ฉ๋๋ ์ธ์ด๋ ์์ ์ด๋ ์ ๋ฌธ ๊ต์ก์ ํตํด ํ์ตํ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค(์์ฒญํ์๋ฉด ์ ๋ฆฌํด์ ์ฌ๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค.. ์๋ง๋)
PHP
์คํ์์ค ์๋ฒ์ธก ์คํฌ๋ฆฝํ ์ธ์ด๋ก์ ์ ์ ๋ฐ ๋์ ์น ์ฌ์ดํธ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ ๋ฐ ์ฌ์ฉ
PHP๋ก ๊ฐ๋ฐ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ท๋ชจ๋ถํฐ ๋๊ท๋ชจ๊น์ง ๋ค์ํ๋ฉฐ, ํ์ด์ค๋ถ๊ณผ ๊ฐ์ ๋ํ ์ ํ๋ฆฌ์ผ์ด์ ๋ PHP๋ก ๊ฐ๋ฐ๋์์ต๋๋ค. PHP๋ฅผ ํ์ฉํ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํด ๋ค์ํ ์์ฉ ์๋ฃจ์ ์ด ์ ๊ณต๋๊ณ ์์ต๋๋ค.
- ๋ธ๋ก๊ทธ - Wordpress, Joomla
- ๊ฒ์ํ - PHPBB, vBulletin
- ์ ์์๊ฑฐ๋, ์ผํ ์นดํธ - Prestashop, OpenCart
- ๊ด๋ฆฌ์ ํจ๋ - PHPMyAdmin
๋ํ ์น ๊ฐ๋ฐ ํ๋ ์์ํฌ๋ก๋ ๋ํ์ ์ผ๋ก ๋ค์ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
- Laravel(๋ผ๋ผ๋ฒจ)
- CodeIgniter(์ฝ๋์ด๊ทธ๋์ดํฐ)
PHP๋ HTML ํ์ผ์ ์ฝ๊ฒ ์ฝ์ ํ ์ ์์ผ๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ด <?php ... ?>๋ก ๋๋ฌ์ธ์ธ ์คํฌ๋ฆฝํธ ์คํ ์์ญ์ ์ฝ์ ํ์ฌ ๊ตฌํํฉ๋๋ค.
<html>
<head>
<title>PHP ๊ฐ๋จ ์์ </title>
</head>
<body>
<?php echo "Hello, hunters!" ?>
</body>
</html>
PHP์ ๋ํ ์ถ๊ฐ์ ์ธ ์ค๋ช ์ ์ฌ๊ธฐ๋ก!
JSP(Jakarta Server Page or Java Server Page)
์๋ฐ ๊ธฐ๋ฐ์ ๋์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ์๋ฒ์ธก ์คํฌ๋ฆฝํ ์ธ์ด
JSP(์๋ฐ ์ํ๋ฆฟ)๋ 6์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ์ง์๋๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์์ ์คํ๋ฉ๋๋ค. JSP๋ ๋ด๋ถ์ ์ผ๋ก ์๋ธ๋ฆฟ์ผ๋ก ์ปดํ์ผ๋์ด ๊ธฐ๋ฅ์ ์ํํ๊ณ , ๊ฒฐ๊ณผ๋ HTML Template๊ณผ ๊ฒฐํฉํ์ฌ ์ต์ข ์ ์ผ๋ก ์น ๋ธ๋ผ์ฐ์ ์ ์๋ต์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค. 7
์๋ฐ์ ํน์ง์ ์ ๋ถ ์๋ค๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. JSP๋ PHP์ ์ ์ฌํ ๊ตฌ๋์ผ๋ก ์๋์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ง์๋ฌธ(Directive): ์ปจํ ์ด๋๊ฐ JSP ํ์ด์ง ์ฒ๋ฆฌ๋ฅผ ์ํด ํ์ํ ์์ฑ๊ณผ ๊ฐ๋ค์ ์ ์ํจ
<%@ directive-name
attribute1="value1"
attribute2="value2"
...
attributeN="valueN"
%>
- ํํ์(Expression): ์ด๋ค ๊ฐ์ ์ถ๋ ฅํ๊ฑฐ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ์ฌ์ฉ๋จ
<%= Some-expression %>
- ์ ์ธ๋ฌธ(Declaration): ๋ณ์๋ ๋ฉ์๋๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉ๋จ
<%! Dec var %>
- ์คํฌ๋ฆฝํ๋ฆฟ(Scriptlet): ์๋ฐ ์ฝ๋๋ฅผ ์คํํ ๋ ์ฌ์ฉ๋จ
<% Some-java-code %>
๋ค์์ ์์์ ์ซ์๊ฐ 100๋ณด๋ค ํฌ ํด๊ทผ, ์ดํ๋ฉด ๋จ๋ ๋ณต๋ถ๋ณต๊ฒ์ ์์ ์ ๋๋ค.
<html>
<head>
<title>JSP ๊ฐ๋จ ์์ </title></head><body>
<%
double num = Math.random(); // ์คํฌ๋ฆฝํ๋ฆฟ์ ์ด์ฉํด if-else ์๋ฐ ์ฝ๋๋ฅผ ์คํํจ.
if (num > 100) {
%>
<h2>์ถํํฉ๋๋ค. ์ผ๋ฅธ ํด๊ทผํ์ธ์!</h2><p>(<%= num %>)</p> // ํํ์์ ์ด์ฉํด num ๊ฐ์ ์ถ๋ ฅํจ.
<%
} else {
%>
<h2>์ ๋ฐ~ ๋น์ ์ด ํด์ผํ ์ผ์ด ์์ด์.</h2><p>(<%= num %>)</p> // ํํ์์ ์ด์ฉํด num ๊ฐ์ ์ถ๋ ฅํจ.
<%
}
%>
<a href="<%= request.getRequestURI() %>"> // ํํ์์ ์ด์ฉํด getRequestURI() ๋ฉ์๋๋ฅผ ํธ์ถํจ.
<h3>๋ค์ ํด๋ณผ๊น์?</h3>
</a>
</body>
</html>
๋ ์์ธํ ๊ณต๋ถ๋ ์ฌ๊ธฐ๋ก!(JSP๋.. ์๋ฃ๊ฐ ์ ๋งคํด์ ์ ์ฌ๋ ธ์ด์)
๊ทธ ์ด์ธ์๋ Python, Ruby, ASP.NET ๋ฑ์ด ์์ผ๋ ๋ํ์ ์ธ ํ๋ ์์ํฌ๋ค์ด๊ธฐ๋ ํ๊ณ ํน์ง๋ง ์ค๋ช ํ๊ธฐ์ ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค(DB)
์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ดํฐ๋ฅผ ์์ฑ, ์ ์ฅ, ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ธฐ์
DB๋ ๊ตฌ์กฐํ๋ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉฐ, ํ์ํ ๋ ์ฝ๊ฒ CRUD(์์ฑ, ๊ฒ์, ์์ , ์ญ์ )ํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ํ ๊ตฌ์ฑ ์์๋ก์ ๋ค์ํ ์ ํ๊ณผ ๋ชจ๋ธ์ด ์์ต๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (DBMS)์ ๋ํด ํน์ง๊ณผ ํจ๊ป ์์๋ด ์๋ค.
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDB; Relational DataBase)
๋ฐ์ดํฐ๋ฅผ ํ ์ด๋ธ ํํ๋ก ๊ตฌ์ฑํ์ฌ ๊ด๊ณ๋ฅผ ํ์ฑํ๋ ๊ธฐ์ ๋ก, ๋๋ถ๋ถ์ DB๋ RDB๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. ํนํ ๋ฐ์ดํฐ๋ฅผ Key์ Vaule์ ์์ผ๋ก ์ด๋ฃจ์ด์ง ํ๊ณผ ์ด๋ก ๊ตฌ์ฑ๋ ํ ์ด๋ธ์ ์ ์ฅํฉ๋๋ค. ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ค์ ํ์ฌ ๋ฐ์ดํฐ์ ์ข ์์ฑ๊ณผ ์ ์ฝ์ ํํํ ์ ์์ต๋๋ค.
RDB๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ์ ์ธ ํํ๋ก, ์์ ๊ณผ ์ ์ฌํ ์คํ๋ ๋์ํธ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
์ด๋ฅผ ๊ด๋ฆฌํ๋ ์์คํ ์ด ๋ ํ์ํ๊ฒ ์ต๋๋ค. ์ด๋ฅผ DBMS(DataBase Management System)๋ผ๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ํํธ์จ์ด๋ก, DB์ CRUD์ ์ํํ ์ ์์ต๋๋ค.
DBMS๋ SQL(Structured Query Language)์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์กฐ์์ ์ฒ๋ฆฌํฉ๋๋ค. SQL์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ จ ์์ ์ ์ฌ์ฉ๋๋ ์ธ์ด๋ก, ์น ํดํน์์๋ SQL ์ธ์ ์ ๊ณต๊ฒฉ์ ํ์ฉ๋ ์ ์์ต๋๋ค.
SQL์ ํฌ๊ฒ ๋ค์์ ์ธ ๊ฐ์ง ์ข ๋ฅ๋ก ๋๋์ด์ง๋๋ค.
- DDL (Data Definition Language, ๋ฐ์ดํฐ ์ ์ ์ธ์ด)
: CREATE, DROP, ALTER ๋ฑ์ ํ ์ด๋ธ๊ณผ ์ธ๋ฑ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ตฌ๋ฌธ
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
department VARCHAR(50)
);
- DML (Data Manipulation Language, ๋ฐ์ดํฐ ์กฐ์ ์ธ์ด)
: INSERT, UPDATE, DELETE, SELECT ๋ฑ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์, ๊ฒ์ํ๊ธฐ ์ํ ๊ตฌ๋ฌธ
INSERT INTO employees (id, name, age, department)
VALUES (1, 'John Doe', 30, 'IT');
- DCL (Data Control Language, ๋ฐ์ดํฐ ์ ์ด ์ธ์ด)
: GRANT, REVOKE, COMMIT, ROLLBACK ๋ฑ ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ์ ์ ์ดํ๊ธฐ ์ํ ๊ตฌ๋ฌธ
GRANT SELECT, INSERT ON employees TO user1;
๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(NoSQL)
์์์ ์ดํด๋ณธ RDB๋ ํ๊ณผ ์ด๋ก ์ ํํ๋ DB๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํจ์ด์์ต๋๋ค. ํ์ง๋ง ๊ธฐ์ ์ ๋ฐ์ ์ผ๋ก ์ด๋ฏธ์ง, ์์ ์ ํํ๋์ง ์๋ ๋ฐ์ดํฐ ์ฆ, ๋น์ ํํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค.
No SQL ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณด๋ค ์ ์ฐํ๊ณ ํ์ฅ์ฑ์ด ๋์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ ์๋ฃจ์
NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ ํํ๋์ง ์์ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ฅ ๊ฐ๋ฅํ๊ฒ ์ ์ฅํ๋ ๋ฐ ์ ํฉํฉ๋๋ค. NoSQL์ ๋ค์ํ ๋ชจ๋ธ์ ์ ๊ณตํ๋ฉฐ, ํค-๊ฐ ์คํ ์ด, ๋ฌธ์ ์คํ ์ด, ์ด ์งํฅ ์คํ ์ด, ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ์ ์ ํ์ด ์์ต๋๋ค. NoSQL์ ์น ์ ํ๋ฆฌ์ผ์ด์ , ์์ ๋ฏธ๋์ด, ๋ก๊ทธ ๋ถ์, ์ฌ๋ฌผ ์ธํฐ๋ท ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ํ๋ฐํ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.
์ฌ๊ธฐ์ ํฌ๊ฒ 4๊ฐ์ง์ ์ข ๋ฅ๊ฐ ์์ผ๋ฉฐ, ์ถํ ๋ ํ์ฉ๋ ์์๋ก ์ดํดํ ์ ์์ผ๋ฏ๋ก ์ด๋ฐ๊ฒ ์๊ตฌ๋ ๋์ด๊ฐ์ ๋ ๋ฉ๋๋ค.
Key-Value ๋ชจ๋ธ
๋จ์ํ ํค์ ๊ฐ์ ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ตฌ์กฐ
๊ฐ์ ์ด์ฉํ์ฌ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ํ String, Bitmaps, Hash, Lists ๋ฑ์ ๋ค์ํ ํํ์ ๋ฐ์ดํฐ๋ก ์ ์ฅํ ์ ์์ต๋๋ค.
Document ๋ชจ๋ธ
JSON ๋๋ BSON ํํ์ ๋ฌธ์ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ชจ๋ธ์ ๋๋ค. MongoDB๊ฐ ๋ฐ๋ก ์ด ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค. 8
Column-family ๋ชจ๋ธ
ํ๋์ Row Key์ ๋งคํ๋๋ ๋ค์์ Column-value ์์ ๋ชจ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ชจ๋ธ์ ๋๋ค. ๋ํ์ ์ธ DBMS๋ก๋ Casandra, Hbase ๋ฑ์ด ์์ต๋๋ค.(RDB๋ ๋น์ทํ ๋๋์ด์ฃ ?)
Graph ๋ชจ๋ธ
๋ ธ๋, ์ฃ์ง, ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํด ๊ทธ๋ํ์ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ชจ๋ธ์ ๋๋ค. ์๋์ ๊ทธ๋ฆผ์์ ๊ฐ ๋ ธ๋๋ฅผ ์๋ ์ ์ ๋ ธ๋๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ ๊ฒ์ ๋๋ค. ์ฌ์ค ์งํฉ ์งํฅ์ด๋ผ๊ธฐ ๋ณด๋ค๋ ๊ด๊ณํ ๋ชจ๋ธ์ ๊ฐ๊น์ต๋๋ค. ๋ํ์ ์ธ DBMS๋ก๋AllegroGraph, Amazon Neptune ๋ฑ์ด ์์ต๋๋ค.
์ฐธ๊ณ ์๋ฃ
์ฐธ๊ณ ์ด๋ฏธ์ง
- ํด๋ผ์ด์ธํธ์ธก์์๋ ์๋ฒ์์ ์๋ต๋ฐ์ HTML, CSS๋ฅผ ํ์ฑํ์ฌ ์น ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ๊ทธ๋ฆฌ๊ณ , ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํด์ํ์ฌ ์ฌ์ฉ์๋จ์ ๋์ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค. [๋ณธ๋ฌธ์ผ๋ก]
- ๋ ์ฝ๋์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ ๊ฒฐ๊ณผ๋ก ๋ฐํ๋๋ ๋ฐ์ดํฐ์ ์งํฉ์ ์๋ฏธ [๋ณธ๋ฌธ์ผ๋ก]
- ์ฌ๋ฌ ์ด์์ฒด์ ๋๋ ํ๋ซํผ์์ ๋์ผํ ์ํํธ์จ์ด๊ฐ ์คํ๋ ์ ์๋ ๋ฅ๋ ฅ [๋ณธ๋ฌธ์ผ๋ก]
- ์ฌ๋ฌ ์ด์์ฒด์ ๋๋ ํ๋ซํผ์์ ๋์ผํ ์ํํธ์จ์ด๊ฐ ์คํ๋ ์ ์๋ ๋ฅ๋ ฅ [๋ณธ๋ฌธ์ผ๋ก]
- ๊ทธ ๋น์์ ๋ฌธ์ ์ ์ผ๋ก Linux์ OS ๋ฌธ์ ์ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ฉฐ, OS์์ ์ ๊ณตํ๋ I/O ์ฒ๋ฆฌ๋ฐฉ์์ ๋ฌธ์ ๋๋ฌธ์ ํ๋ก์ธ์ค๊ฐ ์ ๋๋ก ์ฒ๋ฆฌ X์ ๋ฌธ์ ์ ์ฆ, ๋์์ 10000์ด์ ์ ์์ด ์ด๋ ค์ [๋ณธ๋ฌธ์ผ๋ก]
- ์๋ฐ๋ฅผ ์ฌ์ฉํ์ฌ ์นํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๋ ์๋ฒ์ธก ํ๋ก๊ทธ๋จ ํน์ ๊ทธ ์ฌ์ [๋ณธ๋ฌธ์ผ๋ก]
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ณ ๊ด๋ฆฌํ๋ ํ๊ฒฝ์ ์ ๊ณตํ๋ ์ํํธ์จ์ด์ ๋๋ค. HTTP ํ๋กํ ์ฝ์ ํตํด ํด๋ผ ์์ฒญ์ ์ฒ๋ฆฌ, ์๋ธ๋ฆฟ๊ณผ JSP์ ๊ฐ์ ์๋ฒ์ธก ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ฌ ๋์ ์น ์ปจํ ์ธ ๋ฅผ ์์ฑ(์ธ์ ๊ด๋ฆฌ, ๋ณด์, ์ค๋ ๋ ๊ด๋ฆฌ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณต) [๋ณธ๋ฌธ์ผ๋ก]
- binary๋ก ์ธ์ฝ๋ฉ๋์ด ์๋ JSON์ด๋ฉฐ, BSON์ ๊ธฐ๊ณ์ด๋ก ๋ณํ๋ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ์ฌ๋์ด ์ฝ๊ธฐ ์ํด์๋ ๋ณํํ๋ ๊ณผ์ , ์ฆ ๋์ฝ๋ฉ ๊ณผ์ ์ด ํ์ํฉ๋๋ค. [๋ณธ๋ฌธ์ผ๋ก]
'๐โWeb_Study > ๐ฅโpentestgym' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Error ๊ธฐ๋ฐ SQL ์ธ์ ์ (1) | 2023.07.11 |
---|---|
SQL ์ธ์ ์ ๊ธฐ์ด (2) | 2023.07.07 |
์น ํด๋ผ์ด์ธํธ์ธก ๊ธฐ์ (3) | 2023.05.29 |
์ธ์ฝ๋ฉ(Encoding) (0) | 2023.05.27 |
์ฟ ํค์ ์ธ์ (0) | 2023.05.27 |