XSS, XPath, 악성스크립트는 내용은 조금씩 다르지만 결국 파라미터에 조작된 쿼리문이나, 스크립트 언어 등을 삽입하여
비정상적인 데이터를 호출하거나, 사용자 정보를 가로채는 등의 공격 취약점이다.
따라서 파라미터 부분에 값 검증 처리를 해주면 된다.
1) Filter
웹앱에 필터를 설정하여 파라미터의 값을 필터링하는 기능이다.
필터 기능을 할 클래스와 동작할 클래스를 만들어 webapp - WEB-INF/web.xml 에서 filter 걸어주면 된다.
자세한 내용은
필터 클래스를 직접 복사하면 알겠지만, filterConfig 선언 오류가 난다.
private FilterConfig filterConfig;
추가해줍시다. 나는 추가해주었는데 잘 작동됨.
RequestWrapper 의 cleanXSS 메소드가 필터링을 수행한다.
위에는 XSS 관련된 부분만 필터링을 하므로, XPath 나 악성스크립트에 해당하는 요소들도 맞게 추가 및 삭제하면 된다.
< > ( ) [ ] script javascript eval ' " , @ * = 등등
(select insert update delete drop union 등등도 하면 좋,,겠지?)
이런식으로 문제를 일으킬 수 있는 문자를 거르면 된다.
2) 페이지에 직접 설정
파라미터 값을 받아와서 위처럼 직접 replace 해주거나
요소가 감지되면 알림창 띄우고 뒤로가게하거나 기본값을 세팅하거나
해당 데이터형식만 넣게 하던가.. 등등의 방법으로
필터링하거나 제한을 두면 된다.
try {
year = Integer.parseInt(year);
}
catch (Exception e) {
out.println("<script>");
out.println("alert('잘못된 경로입니다.')");
out.println("location.replace('이동할 URL')");
out.println("</script>");
뒤로가기;
}
year = request("year")
on error resume next
year = CInt(year)
if err.number<>0 Then
Err.Clear
%>
<script type="text/javascript">
alert('올바른 접근 경로가 아닙니다.');
location.replace('이동할 URL');
</script>
<%
end if
Err.Clear
year = request("year")
Dim y_f
y_f = year
year = ""
for i = 1 to len(y_f)
checkSTR = mid(y_f, i, 1)
if asc(checkSTR) > 47 and asc(checkSTR) < 58 then
year = year&checkSTR
end if
Next
If Len(year) > 4 or Len(year) < 4 Then
year = year(now())
end If
숫자 형식이라면 이런식으로.. 숫자만 추출하거나 다른 주소로 이동하게끔 하면 된다.
'WEB > 설정 및 에러' 카테고리의 다른 글
[Java] class 파일 java version 확인 (0) | 2021.04.27 |
---|---|
[이클립스] 프로젝트 자바 버전 변경 (0) | 2021.04.26 |
[웹 보안취약점] Http Method (Apache, WEBAPP, IIS) (0) | 2021.04.16 |
[웹 보안취약점] HttpOnly 설정 방법 (Tomcat, WEBAPP, JAVA, PHP, IIS 10) (0) | 2021.04.15 |
[웹 보안취약점] HttpOnly 확인 방법 (0) | 2021.04.15 |