2012-08-14 2 views
5

북마크를 만들어 사용자가 임의의 페이지에서 CORS를 사용하여 내 서버에 도메인 게시를 연결할 수 있도록합니다. 사용자는 게시하기 전에 인증을해야하며 쿠키가 사용됩니다. 악의적 인 웹 사이트가 사용자의 자격 증명을 사용하여 내 서버에 대한 크로스 도메인 게시를 수행하기 위해 웹 페이지에 자바 스크립트 코드를 삽입하는 것을 방지 할 수있는 방법이 있습니까?CORS를 사용하는 동안 CSRF 방지?

+0

아니요. 대신 웹 사이트 컨트롤의 'iframe'에 게시 한 다음 게시하기 전에 사용자에게 '확인()'을 요청할 수 있습니다. 또는 각 사용자의 북마크릿에 고유 한 CSRF 토큰을 포함시킨 다음 ... 잠깐, 생각이 들었습니다 ... – user2428118

답변

1

이론적으로이 문제에 대한 해결책이있을 수 있습니다.

  1. 각 사용자의 북마클릿에 고유 한 CSRF 토큰을 포함합니다.
  2. 익명 함수로 책갈피 렛에 코드를 래핑하면 페이지에 액세스 할 수 없게됩니다.
  3. 북마클릿에 a strong hash function을 삽입하십시오. 이것은 북마크 렛의 코드 안에 완전히 넣어 져서 변경되지 않도록해야합니다. 당신의 XMLHttpRequest의에서
  4. , 당신은 보내
    1. 메시지를
    2. 의 해시 :
      1. 메시지
      2. 토큰 귀하의 CSRF
      3. 독특한, 긴 소금
      4. 사용자 ID
      5. 타임 스탬프 (메시지가 지금 보내 졌는지, 다른 시간에 보내지 않았는지 확인)
    3. 소금
    4. 타임 스탬프
    5. 사용자 ID 서버에서
  5. , 당신은 확인 : 타임 스탬프가 필요 허용 오차 마진 (내
    1. 하는 사용자의 컴퓨터 때문에 시계가 꺼져있을 수 있습니다.)
    2. 해시가 정확한지
  6. 모든 것이 올 바르면 메시지를 게시 할 수 있습니다. 웹 사이트 (예 : Array() 등) 북마크가 사용하는 기능 중 하나와을 조작하는 경우, 악성 웹 사이트는 여전히 차단 복사 및/또는 메시지를 수정할 수 있습니다 :이 개념 하나의 결함이 있습니다

, userID 또는 CSRF 토큰.