์น ์ ํ๋ฆฌ์ผ์ด์
์์ Path Traversal ์ทจ์ฝ์ ์ ํ
์คํธํ๋ ค๋ ๊ฒฝ์ฐ ๋์ URL์ ์ผ๋ฐ์ ์ผ๋ก https://example.com/../../path
์
๋๋ค. ์์ฒญ์ GET ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น URL์ด ์๋์ ๊ฐ์ด ์ ๊ทํ๋ฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ด๊ฒ์ ํ
์คํธ์์ ์๋ํ์ง ์์ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ๊ฒ์
๋๋ค.
r = requests.get('https://example.com/../../path')
print(r.url)
# https://example.com/path
curl
๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๊ทํ๋ฅผ ๋ฌด์ํ ์ ์๋ ์ต์
์ด ์์ต๋๋ค. --path-as-is
. ๊ทธ๋ ๋ค๋ฉด requests
๋ํด ๋๋ฑํ ์ต์
์ด ์์ต๋๊น?
@EDjur ์ ๋ณด ๊ฐ์ฌํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๊น?
์ค๋น๋ ์์ฒญ์ ์ฌ์ฉํด๋ณด์ญ์์ค
url = "http://example.com/../something.txt"
s = requests.Session()
req = requests.Request(method='POST' ,url=url, headers=headers, data=data)
prep = req.prepare()
prep.url = url
r = s.send(prep, verify=False)
@akmalhisyam ๋๋จํ ๊ฐ์ฌํฉ๋๋ค. ์ ์๋ํ๋ค.
@akmalhisyam ์ด ์ฌ๊ธฐ์ ๋ง์ต๋๋ค. ๋ฐ๋์ ๋ช ์์ ์ผ๋ก ์ค์ ํด์ผ ํ๋ ๊ฒฝ์ฐ PreparedRequests ์ํฌํ๋ก๋ฅผ ์ฌ์ฉํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ์ด์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ค๋น๋ ์์ฒญ์ ์ฌ์ฉํด๋ณด์ญ์์ค