링 위조 토큰이 생성되거나 HTML 페이지에 삽입 될 때를 이해하려고합니다. 나는 Compojure/ring/딸꾹질을 사용하고있다.하지만 나는 내 질문에 대해 정말로 생각하고있다. 나는 그 자체로 어떤 문제도 없습니다. 나는 위조 방지 토큰이 언제 그리고 어떻게 "주입"되는지를 알고 싶습니다.링 위조 토큰은 언제 삽입됩니까?
ring.util.anti-forgery
에서 anti-forgery-field
기능은 다음과 같이 구현됩니다 : 나는 REPL에서이 함수를 호출하면
(html (hidden-field "__anti-forgery-token" *anti-forgery-token*)
내가 얻을 : 아직도
REPL> (println (anti-forgery-field))
<input id="__anti-forgery-token" name="__anti-forgery-token" type="hidden" value="Unbound: #'ring.middleware.anti-forgery/*anti-forgery-token*" />
을 REPL에서, 나는이를 얻기 위해 시도하는 경우 var 나는 동일한 "언 바운드"변수를 얻습니다.
> ring.middleware.anti-forgery/*anti-forgery-token*
=> #object[clojure.lang.Var$Unbound 0x1eae055 "Unbound: #'ring.middleware.anti-forgery/*anti-forgery-token*"]
그 "언 바운드"가치가 전달 된 실제 토큰으로 (링에 의해) 변형되었을 때도 이해할 수 없다. 특히 웹 사이트에 연결하는 여러 사용자가 각 토큰 (세션별로)을 얻는 방법을 이해하지 못합니다.
해당 변수는 항상 "언 바운드"입니까? 언제/어떻게 그것이 "바운드 (bound)"가 되는가? 또한
, 나는 링 세션 ID를 가지고있는 경우 (예를 들어 "링 세션 = 310678be - 9ef6-41a7-A12A-b2417de4a79f") I는 서버 측에서합니다 (Clojure의 REPL에서 볼 수있는 방법,), 해당 위조 토큰의 값은?
는 https://github.com/ring-clojure에서 소스를 읽어보십시오 /ring-anti-forgery/blob/master/src/ring/middleware/anti_forgery.clj, 특별히 멋진 것은 없습니다. 일단 당신이 그 일을 마쳤다면, 그 메커니즘에 대해 특별한 질문이 있다면, 그것은 아마도 좋은 질문이 될 것입니다. – amalloy
@amalloy : 음, 이미 읽었을뿐입니다. 그리고 이것은 * ring *뿐만 아니라 Clojure (소스를 사용하는 것이 왜 도움이되지 않았고 왜이 질문을했는지 설명 할 것입니다)를 이해하지 못하기 때문에 발생하지 않을 수 있습니다. 나는 대답이 다음과 같은 메커니즘을 이해하는 데 도움이되는 질문이라고 생각합니다. * "REPL에서 2 명의 사용자가 내 웹 사이트에 로그인하고 링 세션 ID를 알고있는 경우 어떻게 두 가지 위조 토큰을 읽을 수 있습니까?" *. 이것은 내가 두포의 상황을 이해하는 데 정말로 도움이 될 것입니다. –