
#!/usr/bin/python3 from flask import Flask, request, render_template, abort from functools import wraps import requests import os, json users = { '0': { 'userid': 'guest', 'level': 1, 'password': 'guest' }, '1': { 'userid': 'admin', 'level': 9999, 'password': 'admin' } } def internal_api(func): @wraps(func) def decorated_view(*args, **kwargs): if request.remote_addr == '127.0.0.1': return func(*..

URI URI(Uniform Resource Identifier)๋ ์์์ ๊ฐ๋ฆฌํค๋ ๋ฌธ์์ด์ด๋ค. ์์์ ์นํ์ด์ง, ์ฌ์ง์ด๋ html ํ์ผ, ๋์์ ๋ฑ ์ธํฐ๋ท์์ ๊ฐ์ ธ์ฌ ์ ์๋ ๋ฐ์ดํฐ ๋ฌด์์ด๋ ๋ ์ ์๋ค. URI๋ ์ด์ ๊ทธ ์์์ ๊ฐ๋ฆฌํค๋ ์๋ณ์์ด๋ค. ์์์ ์ด๋ฆ์ผ๋ก ๋ํ๋ผ ์๋ ์๊ณ ๊ทธ ์์์ ์์น๋ก ๋ํ๋ผ ์๋ ์๋ค. URI Syntex URI๋ scheme, authority(userinfo), path, query ๊ทธ๋ฆฌ๊ณ fragment๋ก ์ด๋ฃจ์ด์ ธ์๋ค. The generic URI syntax consists of a hierarchical sequence of components referred to as the scheme, authority, path, query, and fragment...

์ด ํฌ์คํธ๋ ์ธํ๋ฐ์ ๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ๊ธฐ๋ณธ ์ง์์ด๋ผ๋ ๊ฐ์๋ฅผ ์ฐธ๊ณ ๋ก ์์ฑํ์๋ค. ์ฌ๊ธฐ์ ๋ค๋ฃจ๋ ๋ด์ฉ์ ๊ต์ฅํ ๊ธฐ์ด์ด๊ธฐ ๋๋ฌธ์ ๋์ถฉ ์น์ด ์ด๋ ๊ฒ ํ๋ฌ๊ฐ๊ตฌ๋~๋ผ๋ ์ ๋๋ก ์ดํดํ๋ฉด๋๋ค. ์ธํฐ๋ท ํต์ ์ธํฐ๋ท์์ ์ปดํจํฐ ๋์ ์ด๋ป๊ฒ ํต์ ํ ๊น? ์น์์ ์ปดํจํฐ ๋๋๊ฐ ํต์ ์ ํ๋ค๊ณ ํ์. ์๋ฅผ ๋ค์ด ์ฐ๋ฆฌ๊ฐ ์นํฌํธ์ฌ์ดํธ์ ์ ์ํ๋ ์ํฉ์ ๊ฐ์ ํด๋ณด์. ์ด๋ ํฌํธ์ฌ์ดํธ์ ์ ๋ณด๋ฅผ ์์ฒญํ๋ ์ปดํจํฐ์ ํฌํธ์ฌ์ดํธ ์ ๋ณด๋ฅผ ์ฐ๋ฆฌ์๊ฒ ์ฃผ๋ ์ปดํจํฐ ์ด๋ ๊ฒ ๋ถ๋ฅํ ์ ์์ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ ์ ๋ณด๋ฅผ ์์ฒญํ๋ ์ปดํจํฐ๋ฅผ ํด๋ผ์ด์ธํธ, ์ ๋ณด๋ฅผ ์ ๊ณตํด์ฃผ๋ ์ปดํจํฐ๋ฅผ ์๋ฒ๋ผ๊ณ ๋ณผ ์ ์๋ค. ์น์์๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ HTTP ์๋ต ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ํ์์ผ๋ก ํต์ ์ด ์ด๋ฃจ์ด์ง๋ค. ํ์ง๋ง ์ธ์..
์นํดํน์์๋, NGINX ๊ณต๋ถํ ๋๋ ๋ ํค๋๊ฐ ์ข ์ข ๋ฑ์ฅํด ์ ๋ฆฌํด ๋ณด๊ณ ์ ํ๋ค. ์ X-Fowarded-for ํค๋์ X-Forwarded-Proto๋ฅผ ์ธ๊น? ๊ฐ๋จํ ๋งํด์ ๋ ํค๋๋ ์๋ฒ๋ก ์ ๊ทผํ ์ ๋ค์ ip์ ํ๋กํ ์ฝ์ ์๋ ค์ฃผ๋ ํค๋์ด๋ค. ๊ทธ๋ฐ๋ฐ ์๋ฒ ๋ก๊ทธ์๋ ๋ถ๋ช ๋๊ฐ ์ด๋ป๊ฒ ์ ๊ทผํ๋์ง ๋์ฌํ ๋ฐ ๊ตณ์ด ๋ฐ๋ก ํค๋๋ฅผ ๋ง๋ค์ด ๋ช ์ํด์ฃผ๋ ์ด์ ๋ ๋ญ๊น? ๊ทธ ์ด์ ๋ ๋ง์ฝ ํด๋ผ์ด์ธํธ๊ฐ ํ๋ก์๋ ๋ก๋ ๋ฐธ๋ฐ์ ๋ฑ์ ํตํด ์๋ฒ์ ์ ๊ทผํ๋ค๋ฉด ์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ ํ๋ก์๋ ๋ก๋ ๋ฐธ๋ฐ์์ ์ ๋ณด๋ฅผ ๊ธฐ๋กํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ค์ ๋งํด ๋ ํค๋๋ ๋ก๋๋ฐธ๋ฐ์ ํน์ ํ๋ก์์ ์ ๊ทผํ ํด๋ผ์ด์ธํธ์ IP์ฃผ์(X-Forwarded-For)์ ํ๋กํ ์ฝ(X-Forwarded-Proto)์ ๋ํ๋ธ๋ค. Syntex X-Forwarded-For:..