私はリング偽造トークンがHTMLページに生成または挿入される時期を理解しようとしています。私はCompojure/ring/hiccupを使用していますが、私はそれが本当にリングについての質問です。私はそれほど問題はありません。私はちょうどアンチウィーリーズトークンが「注入された」時代とその方法を知りたいのです。リング偽造トークンはいつ挿入されますか?
ring.util.anti-forgery
からanti-forgery-field
関数は次のように実装されています。私はこれを取得しようとした場合、REPLでまだ
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でこの関数を呼び出した場合
(html (hidden-field "__anti-forgery-token" *anti-forgery-token*)
var私は同じ "結合されていない"変数を得る:
> ring.middleware.anti-forgery/*anti-forgery-token*
=> #object[clojure.lang.Var$Unbound 0x1eae055 "Unbound: #'ring.middleware.anti-forgery/*anti-forgery-token*"]
私その "結合されていない"値が実際のトークンに変換されたとき(リングによって変換されたとき)も、理解されないのでしょうか?そして、私は特に、Webサイトに接続しているいくつかのユーザーが、セッション毎に異なるトークンを取得する方法を理解していません。
この変数は常に「バインドされていませんか」ですか?いつどのように「束縛される」のでしょうか?また
、私はリングセッションIDを持っている場合(たとえば"リングセッション= 310678be-9ef6-41a7-A12A-b2417de4a79f")私は、サーバー側で(ClojureのREPLで、見ることができますどのように、 )、対応する偽造防止トークンの値?
はhttps://github.com/ring-clojureでソースを読んで試してみてください/ring-anti-forgery/blob/master/src/ring/middleware/anti_forgery.clj、これは何か特に派手ではありません。これをやったら、そのメカニズムについて具体的な質問があれば、おそらく質問するのがよいでしょう。 – amalloy
@amalloy:まあ私はすでにそれを読んでいたので、私はそれを手に入れませんでした。そして、これは私がリング*だけでなくClojure(ソースを使ってなぜ私を助けなかったのか、なぜ私がこの質問に尋ねたのかを説明する)を理解していないためではありません。 *「REPLから、2人のユーザが私のウェブサイトにログインして、自分のリングセッションIDを知っている場合、どのように2つの異なる偽造トークンを読むことができますか? *。これは実際にボンネットの下で何が起こっているのかを理解するのに役立ちます。 –