2012-05-25 4 views
3

jQuery로 세션의 세션 ID를 가져올 수 있는지 궁금합니다. 그렇다면 어떻게해야합니까? jquery.com에서 찾을 수없는 것 같습니다.jQuery로 ASP.NET 세션 ID 받기

+0

이렇게하면 보안 취약점이 발생할 수 있습니까? – frenchie

+0

@frenchie, 어떻게 그럴 수 있죠? 세션 ID는 이미 쿠키 또는 쿼리 문자열에서 사용할 수 있습니다. – walther

+0

@walther : 쿠키에 저장되어있는 경우 페이지에서 실행중인 앱만 읽을 수 있습니다. 그러나 페이지에서 액세스를 시작하면 페이지 변수에 저장되어 원치 않는 코드에 액세스 할 수 있습니다. 100 % 확신 할 수는 없지만 보안 관련 문제를 더 많이 접하면할수록 취약점을 공개 할 확률이 높아집니다. – frenchie

답변

1

jQuery는 클라이언트 측에서만 사용할 수 있으므로 세션 ID를 가져 오기 위해 서버와 통신 할 수 없으므로 혼자서 사용할 수 없습니다 .

해결 방법은 jQuery의 AJAX 요청에서 호출 할 수있는 XML/JSON 형식의 세션 ID를 반환하는 webservice를 만드는 것입니다. 이 같은

뭔가 :

$.ajax({ 
    url: "/mywebservice.asmx", 
    dataType: "json", 
    success: function(data) { 
     var sessionId = data.sessionId; // This would be determined by your server-side implementation 
     // do something with the sessionId... 
    } 
}); 
+0

흥미 롭습니다. 항상 세션 ID가 쿠키 또는 쿼리 문자열에 저장되어 있다고 생각합니다. 언제 변경 되었습니까? – walther

+0

@walther 그렇습니다. 그러나 jQuery에서 직접 읽을 수는 없으므로 인코딩되었습니다. 나는 틀릴 수도 있습니다 - 처음은 아닐 것입니다;) –

+0

왜 이것에 대한 별도의 요청을합니까? 이 코드를 페이지에 포함하십시오. –

2

세션 ID가 (브라우저 capabilites 또는 asp.net 구성에 따라) 쿠키 또는 쿼리 문자열 중 저장됩니다. 세션 ID가있는 위치를 찾고 거기에서 읽으십시오.

+0

이것이 작동하는 동안 세션 쿠키가 어떤 방식 으로든 인코딩되지 않았습니까? –

+0

어쩌면, 해킹을 제외하고 왜 누군가가 그것을 원한다고 확신 할 수 있을지 모르겠습니다 ... – Sly