2017-11-18 10 views
0

보안 팀에서 다음 코드를 교차 사이트 스크립팅으로보고했습니다. JS의 redirect 메소드에서 response.url을 작성하는 안전한 대체 방법은 무엇일까요?

 redirect: function redirect(ajax, response, status) { 
  window.location = response.url; 
 }); 

그들은 더 좋은 방법

$(document).ready(function(){ 
 
$("#myDiv").on("click", "button", function(){ 
 
var eid = $("#eid").val(); 
 
$("resultsDiv").append(eid); 
 

 
}); 
 
});

에 쓰기의 샘플을 준하지만 내 코드 그것을 어떻게?

+0

소위 "샘플"은 말이 안됩니다! 리다이렉트 기능이 어떻게 크로스 사이트 스크립팅인지는 모르겠다. –

답변

0

사용자 입력이 포함되어 있고 사용자가 javascript: alert(1)을 입력하면 일부 브라우저에서 실행되므로 response.url 매개 변수에서 교차 사이트 스크립팅이 발생할 수 있습니다. 이것이 악용 될 수 있는지 여부는 상황에 따라 다릅니다 (매개 변수가 무엇이고 어떻게 사용되는지, 어떤 브라우저가 호출되는지는 redirect입니다).

다른 코드는 실제로 이해가 가지 않습니다. :)

해결 방법은 위의 내용에도 달려 있습니다. 호출자가 사용자 입력을 포함하지 않도록하거나 redirect()에 입력 유효성 검사를 구현할 수 있습니다 (예 : 'http'로 시작하는 response.url, 'javascript :'등 포함하지 않음)

또한 주목하십시오 크로스 사이트 스크립팅이 아니라면 오픈 리디렉션이 될 수 있습니다.