Ben componentjure 1.1.18 ve diğer eski lib'lerde çalışan eski bir kod kopyaladım, ancak en son sürümleri kullanarak çalışamıyorum.En son sürüm ring/componentjure ile zil önleme/CSRF belirtecini nasıl kullanabilirim?
İşte benim minimal example code Hatta başlık seti ile, bir http POST
gönderirken son halkası ve compojure kitaplıkları ile, bir hata alıyorum olduğunu göstermek için the minimal example here kopyalanan.
lein ring server
sonra yapmak, bunu başlatmak için
curl -X GET --cookie-jar cookies "http://localhost:3000/"
:
{"csrf-token":"7JnNbzx8BNG/kAeH4bz1jDdGc7zPC4TddDyiyPGX3jmpVilhyXJ7AOjfJgeQllGthFeVS/rgG4GpkUaF"}
Ama bu
curl -X POST -v --cookie cookies -F "[email protected]" --header "X-CSRF-Token: 7JnNbzx8BNG/kAeH4bz1jDdGc7zPC4TddDyiyPGX3jmpVilhyXJ7AOjfJgeQllGthFeVS/rgG4GpkUaF" http://localhost:3000/send
yaptığımda <h1>Invalid anti-forgery token</h1>
Am olsun Yanlış bir şey yapıyorum ?
was intended to answer this question ödünç aldığım kod.
(defroutes app-routes
(GET "/" [] (generate-string {:csrf-token
*anti-forgery-token*}))
(POST "/send" [email] "ok")
(resources "/")
(not-found "Not Found"))
(def app
(-> app-routes
(wrap-defaults site-defaults)))
Böylece iki sahtekarlığa karşı belirteçleri oluşturulur ve:
Karanlıkta çekilmiş ancak ters eğik çizgileri kullanarak eğik çizgilerden (belirteç içinde) kaçmak herhangi bir fark yaratır mı? – lispHK01
Teşekkürler! James Reeves/weavejester, besteci ve [halka-sahteciliğe karşı korumanın kalıcılığı bana yeni 'wrap-varsayılanlar' ve 'ring-default'lar paketinde' site varsayılanları 'olduğunu söyledi (https://github.com)/Ring-clojure/ring-anti-forgery/issue/10) Kullanımdan kaldırılan componentjure 'handler 'isim alanının yerine otomatik olarak HTTP' POST' et al. Yani kodum iki kez belirteç üretir ve ben yanlış olana karşı doğrularım. Bir düzeltme üzerinde çalışıyorum ... – sventechie