728x90
반응형
크로스사이트 스크립팅
악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법
보안위협
웹 사이트 게시판, URL등에 악의적인 스크립트를 삽입하여 사용자의 쿠키(세션)를 도용하거나
악성코드(URL 리다이렉트)를 유포할 수 있다.
취약한 코드
사용자 입력 값에 대한 검증 및 필터링이 이루어지지 않으며, HTML코드가 입력실행되는 경우
조치방법
사용자로부터 입력받는 인수값에 대해서는 검증 로직을 추가하거나, 부득이하게 게시판에서 HTML을 사용하는 경우 HTML코드 중 필요한 코드에 대해서만 입력 가능하도록 설정
1. 검색어에서 XSS를 방지하기 위해, 특수기호 필터링
public String CleanInput(string strIn) {
// Replace invalid characters with empty strings.
try {
strIn = HttpUtility.UrlDecode(strIn);
return Regex.Replace(strIn, @"[^\w\.,-]", "", RegexOptions.None);
}
// If we timeout when replacing invalid characters,
// we should return Empty.
catch(Exception ex) {
return String.Empty;
}
}
2. 게시글을 작성 시, 불필요한 HTML 태그를 삭제한다.
필터링 조치 대상 태그 : <script>, <embed>, <object>, <frameset>, <frame>, <iframe> 등
public String RemoveBadTag(string v) {
v = Regex.Replace(v, @"</?(?i:script|embed|object|frameset|frame|iframe|meta|style|BLOCKQUOTE|onerror|onload|onfocus)(.|\n|\s)*?>", string.Empty, RegexOptions.Singleline | RegexOptions.IgnoreCase);
return Regex.Replace(v, @"(?:<[^>]+\s)(on\S+)=[""']?((?:.(?![""']?\s+(?:\S+)=|[>""']))+.)[""']?", string.Empty, RegexOptions.Singleline | RegexOptions.IgnoreCase); //이벤트핸들러 태그 삭제
}
728x90
반응형
'C#' 카테고리의 다른 글
네이버 스마트에디터] 이미지파일 업로드시 Base64인코딩 태그로 수정 (0) | 2021.09.06 |
---|---|
C#] JWT, JSON Web Token 사용법 (0) | 2020.10.23 |
C#] AES128, AES256 암호화 복호화 코드 (0) | 2020.10.16 |
C#] 파일 업로드 시, MIME TYPE 체크, 확장자 필터링 (0) | 2020.10.15 |
C#] 개인정보 마스킹 : 이름, 주소, 휴대폰번호 (0) | 2020.10.06 |
댓글