2014-03-02 2 views
1

jQuery와 Ajax 기능이있는 PHP 애플리케이션이 있습니다. Ajax 요청을 검증하기 위해 보내는 세션 토큰을 페이지를로드하지 않고 각 Ajax 요청마다 재생성하는 것이 어떻게 가능합니까?jQuery를 사용하여 각 Ajax 요청에서 세션 토큰을 재생성하는 방법은 무엇입니까?

페이지에 여러 개의 Ajax 쿼리를 실행하는 요소가 더 많지만, 지금은 모두 동일한 토큰을 얻습니다. 그래서 누군가가 tokey를 가지고 있다면, 나는 그들이 추측 한 다른 형태의 위조 된 요청을 제출할 수 있습니다.

+0

이 http://meta.stackexchange.com/questions 같은 소리 ... Btw는

응용 프로그램을 보호하는 첫 번째 단계는 HTTPS 프로토콜을 사용하고 있습니다 ... 작동합니다/66377/what-is-the-xy-problem – andrew

답변

0

클라이언트 측에서 토큰을 생성하는 것은 의미가 없습니다. 요청을 보내는 클라이언트 소프트웨어인지 또는 악의적 인 소프트웨어인지 모르기 때문에 클라이언트 측에서 오는 어떤 것도 믿을 수 없습니다. ajax 가능한 요청 수만큼 토큰을 작성하고 각 응답마다 새 토큰을 리턴해야합니다.

+0

나는 클라이언트 측에서 토큰을 생성하려고하지 않는다. 물론 서버 측에서 생성하고 싶습니다. 이것은 세션을 만드는 유일한 방법입니다. –

+0

죄송합니다. 오해했습니다. 그렇다면 아약스 호출이있을 때마다 페이지에서 각 아약스 호출마다 다른 토큰을 생성하고이를 대체 할 새 토큰을 제공하는 것이 어떻습니까? 서버 측 세션에 토큰 목록을 저장한다는 의미입니다. –

0

각 사용자 또는 각 세션마다 서버 측에 CSRF 토큰을 생성해야합니다. 데이터베이스 또는 세션에 저장할 수 있습니다. 클라이언트에게 해당 토큰을 보내고 ajax 요청을 기다려야합니다. 귀하의 사이트가 XSS 취약하지 않습니다 때까지

관련 문제