본문 바로가기

첨부파일 다운로드/업로드 취약점 게시글, 결재 문서 등 첨부파일을 업로드가 가능한 페이지 일 경우 업로드가 가능한 파일 확장자를 화이트 리스트로 관리하거나, 업로드가 불가능한 파일 확장자를 블랙 리스트로 관리하여야 합니다. 예를들어 사용자 정보를 탈취하는 악성 실행파일이 업로드가 가능하다고 가정해봅시다.악성 파일을 업로드 후 해당 파일의 URL을 브라우져에서 입력을 하게되면 악성파일이 실행되게 되며, 사용자 정보가 해커에게 고스란히 전달되게 됩니다. 악성 파일이 업로드가 가능하다고 할 지라도 URL 등을 통하여 실행을 하지 못하게 막는다면 사용자 정보가 유출되지는 않을것입니다. (물론악성 파일을 업로드 가능하게끔 허용하라는 말은 아닙니다.) 1. 첨부파일 업로드를 제한해야하는 확장자 (차후 리스트 갱신 예정) - 업로드가 불가능한 확장.. 더보기
Cross Site Scripting (XSS) Cross Site Scripting(XSS) 란? 게시글과 같은 페이지에, 공격자가 악성 스크립트를 삽입하여, 사용자의 정보를 탈취, 악성코드등을 유입시키는 공격을 말합니다. 이 공격의 특징으로는 사용자(클라이언트) 대상으로 이루어 진다는 점입니다. 1. XSS 공격 패턴 2. XSS 공격을 사전 예방하는 방법 2-1. 위험한 문자열을 인코딩하여 저장하거나, 인코딩하여 표시하는 방법 문자 인코딩 된 문자 & & > ' ' " " ( ( ) ) / / - 클라이언트에서 위험한 특수문자를 인코딩하는 함수123456//받은 입력값 특수문자 변환 처리function XFN_ChangeInputValue(pValue) { var strReturenValue = ""; strReturenValue = p.. 더보기
인코딩 관련 함수 웹 개발을 하다보면 클라이언트 서버 간 데이터를 주고받을때 데이터가 깨지거나, 원하는 값을 제대로 전달받지 못하는 경우가 발생합니다. 클라이언트서버간 데이터를 주고받을 때 XML, URL 파라메터, 한글, 특수문자등의 데이터를 인코딩/디코딩 함수를 통하여 변환을 적절하게 해주어야 합니다. 1. Javascript 인코딩 관련 함수 escape()A~Z, a~z, 1~0 , @*-_+./ 등이 아스키문자가 아니라면 모두 유니코드 형식으로 변환 encodeURI()escape()와 비슷하지만 인터넷 주소 표시에 쓰이는 특수문자들 (:;/=?&)등의 특수문자는 인코딩이 되지 않음 . 보통 파라미터를 전달하는 인터넷주소(URL) 전체를 인코딩 할 때 사용 encodeURIComponent()encodeURI().. 더보기