opened_file = open(‘data/’+파일이름, ‘w’)
opened_file.write(내용)
print(“Location: index.py?=id”+파일이름+”\n”)
form = cgi.FieldStorage()
pageId = form["id"].value
description = open('./data/'+pageId, 'r').read()
<form action="process_update.py" method="post">
<input type="hidden" name="pageId" value="{pageId}">
<p><input type="text" name="title" placeholder="title" value="{pageId}"></p>
<p><textarea row="4" name="description"
placeholder="description">{description}</textarea></p>
<p><input type="submit"></p>
</form>
#!/usr/bin/python3
import cgi, os
form = cgi.FieldStorage()
pageId = form['pageId'].value
os.remove("./data/"+pageId)
#cgi Redirection 헤더
print("Location: index.py\n")
이렇게 만든 현재 페이지는 보안상으로 취약하다. 대표적으로 데이터를 받아들이고 표시하는데 있어 아무런 필터링이 없기 때문에 XSS를 막을 수 없다.
XSS란?
Cross Site Scripting의 약자이다. 권한이 없는 사용자가 스크립트를 삽입하고, 이를 이용해 원치 않는 기능을 실행하거나 정보를 탈취해 갈 수 있다.
문자 '<', '>'는 '<', '>'로 표현할 수 있다. 스크립트를 실행하는 <script></script>의 꺽새를 교체하여 XSS를 막을 수 있다.
html-sanitizer은 스크립트를 막는 것 이외에도 css를 대체하여 가장 비슷한 html 태그로 수정하는 등 다양한 기능을 제공한다.
from html_sanitizer import Sanitizer
sanitizer = Sanitizer() # default configuration
sanitizer.sanitize('내용')
파이썬과 CGI를 이용해 기본적인 CRUD가 가능한 웹페이지를 만들었다. 강의를 따라하다 보니 능동적인 학습은 하지 못한거 같아 이후 레퍼런스나 도움 없이 동일하게 기능하는 페이지를 만들며 복습하는 시간을 가져야할 것 같다. 어려운 내용은 없었으나 웹페이지를 생성하고 다른 파일로 리다이렉트 하는게 아직 익숙지 않아 개념(?)사고방식(?)이 조금 헷갈렸다. 이부분에 조금 더 집중하며 복습해야겠다. 그 다음으로는 무엇을 공부할지 Django와 Flask 중에 고민이었는데, 인터넷 검색한 결과론 공부 목적이면 Flask부터 해보는게 좋다고 얼핏 봐서 그것부터 해보기로 결정했다.