html을 건드릴 수 없을 때와 같은 상황에서 javascript에 form을 즉석에서 만들어줌으로써 동적으로 데이터 전송을
가능하게 할 수 있다.
<script type="text/javascript"> var form = document.createElement("form"); //태그 만들기 createElement form.setAttribute("method", "post"); //태그 method속성 주기 => Post 방식 form.setAttribute("action", "<주소가 없으면 비우기>"); //태그 action속성 주기 => 요청 보낼 주소 <form method="post" action=""> 이 만들어졌다. var hidden1 = document.createElement("input"); //인풋태그 생성 hidden1.setAttribute("type", "hidden"); //태그 type속성 주기 hidden1.setAttribute("name", "name1"); //태그 name속성 주기 hidden1.setAttribute("value", "name1"); //태그 value속성 주기 form.appendChild(hidden1); //form 변수(그러니까 form태그)의 자식(child)으로 hidden1을 붙여준다 <form method="post" action=""> <input type="hidden" name="name1" value="name1">까지 만들어졌다. 바로 밑의 hidden2는 이것과 같으므로 생략한다. 결과적으로 만들어진 폼의 모양을 생각! var hidden2 = document.createElement("input"); hidden2.setAttribute("type", "hidden"); hidden2.setAttribute("name", "name2"); hidden2.setAttribute("value", "name2"); form.appendChild(hidden2); document.body.appendChild(form); //body태그의 자식으로 form 태그 붙여주기 form.submit(); //submit함수로 form전송 submit함수는 추가이해필요 </script> |
XSS, CSRF와 같은 공격이 가능한 취약점이 있다면 이것은 큰 문제가 될 것이기에 스크립트 태그가 먹히지않도록
htmlspecialchars 와 같은 함수로 보완해야한다.
'<보안 study> > 웹' 카테고리의 다른 글
WASM(Web Assembly) 정리 (2) | 2021.08.31 |
---|---|
CSP(Content-Security-Policy) 정리 (0) | 2021.08.23 |
DreamHack CTF 문제에서 배우는 NOSQL Injection (0) | 2020.09.30 |