render_template("vuln.html")가 vuln.html 내부의 JS 문을 동작하지 못하도록 막는 용도인가요?
XSS-2에서는 XSS-1과 달리 <script> 명령어를 사용하니 동작하지 않았습니다. 그래서 저는 render_template의 영향으로 JS 명령어 전체가 동작하지 않는 줄 알았으나 document.cookie는 정상 작동했습니다. 저는 document.cookie가 JS의 명령어인 줄 알았는데, 혹시 제가 기존에 알고 있던 것에 오류가 있나요? 아니면 render_template가 JS 명령어 전체를 vuln.html에서 동작하지 못하도록 하는 것이 아닌가요?
#web
작성자 정보
답변
1
Little Stranger
대표 업적 없음
# xss-1 / app.py
@app.route("/vuln")
def vuln():
param = request.args.get("param", "")
return param
xss-1의 경우에는 템플릿으로 반환에서 script 태그가 작동하지만
# xss-2 / vuln.html
{% block content %}
<div id='vuln'></div>
<script>var x=new URLSearchParams(location.search); document.getElementById('vuln').innerHTML = x.get('param');</script>
{% endblock %}
xss-2에서는 html 자체에서 url에서 입력값을 받아와 innerHTML을 해줍니다. innerHTML에서는 script태그가 작동하지 않는것이 정상입니다.
refer : innerHTML docs