XSS 빈틈 공격 예방

2302 단어 구멍각본xss해커
XSS 공격 의 특징 은 HTTP 매개 변수 내용 을 특수 하 게 작성 하여 정 보 를 얻 고 명령 을 수행 하 는 목적 을 달성 하 는 것 이다.
간단 한 예 를 들 어 로그 인 페이지 가 있다 면 로그 인 후 페이지 에 사용자 의 사용자 이름 을 표시 합 니 다.코드 세 션 은 다음 과 같 습 니 다:  
request.setAttribute("username", username);

로그 인 후 표시 되 는 JSP 페이지 세 션:            
      : <span>${username}</span>

정상 적 인 상황 에서 이 기능 은 잘 작 동 할 것 이 며 아무런 문제 가 없 을 것 이다.하지만 엉뚱 한 사람 을 만나면 결 과 는 달라 진다.예 를 들 어 브 라 우 저 에 URL 을 입력 하면 http: /% host%:% ip% / XX / login? username = < script > alert ('해커!!!') < / script >
그러면 결 과 는 로그 인 사용자 의 이름 을 페이지 에서 보 는 것 이 아니 라 '해커!!!' 라 는 알림 상자 가 팝 업 됩 니 다. 이것 이 전형 적 인 크로스 스 크 립 트 공격 입 니 다.
해결책 은 바로 사용 하 는 것 이다. 
${param.userName}
출력 매개 변수.
일반적으로 상술 한 방법 은 해결 된다.하지만 여기 에는 내 가 만난 두 가지 특별한 상황 이 열거 되 어 있다.포인트 가 왔 습 니 다.
1. 페이지 에 설명 되 어 있 는 내용 은 받 은 매개 변 수 를 포함 합 니 다.
URL 은 다음 과 같 습 니 다.   http: / /% host%:% ip% / XX / view? Id = 1 & type = manage * / alert ('해커!!!'); / *
jsp 코드 세 션:
/* $("#search-btn").click(function(){
	window.location="../link?type=${param.type}&Id=${param.Id}";
}); */
이때 분 석 된 html 코드 는:
/* $("#search-btn").click(function(){
	window.location="../link?type=manage*/alert('  !!!');/*&Id=1";
}); */
위의 URL 을 방문 하면 팝 업 알림 상자 에 '해커!!!' 를 표시 합 니 다.
따라서 페이지 에 필요 하지 않 은 주석, 특히 입력 매개 변 수 를 포함 한 주석 을 제거 해 야 합 니 다.
2. 페이지 에서 받 은 인 자 를 직접 사용 합 니 다.괄호 안에 인자 넣 기
URL 은 다음 과 같 습 니 다: http: / /% host%:% ip% / XX / view? Id = 3 & type = manage & node = 79777);alert ("해커!!!");%2f%2f
jsp 코드 세 션:
<pre name="code" class="html">var proxy = Handler.getProxyByNode(${param.node});
 而此时解析出来的html代码为: 
 
var proxy = Handler.getProxyByNode(79777);alert("  !!!");//);
위의 URL 을 방문 하면 팝 업 알림 상자 에 '해커!!!' 를 표시 합 니 다.
그래서 이렇게 받 은 인 자 를 직접 사용 하 는 것 을 피해 야 한다.다음 방법 을 써 야 한다.
var node = '${param.node}';
var proxy = Handler.getProxyByNode(node);

좋은 웹페이지 즐겨찾기