मुझे डर है कि इसे प्राप्त करने के लिए कोई विश्वसनीय तरीका नहीं है। सबसे अच्छा तरीका मैं सोच सकता हूं, आपके जावास्क्रिप्ट क्लाइंट में किसी प्रकार की निजी कुंजी उत्पन्न कर रहा है, और कोड को कम कर रहा है। इससे आपके तरीकों का उपयोग करने के लिए "एक अटकर" के लिए मुश्किल हो जाएगी। हो सकता है कि एचएमएसी का उपयोग करें, या ऐसा कुछ।
एक उदाहरण। आप निम्नलिखित कॉल करना चाहते हैं: /api/users/1/vote_up
। आप अपनी निजी कुंजी उत्पन्न करने के लिए कुछ कोड हो सकता है:
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/hmac-sha256.js">
var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, generatePassphraseObfuscated());
hmac.update("/api/users/1/vote_up");
var hash = hmac.finalize();
$.ajax(
/api/users/1/vote_up,
{hash: hash}
)
</script>
generatePassphraseObfuscated
समारोह कुंजी है। आपको इसे दोहराने के लिए वास्तव में कठिन बनाना होगा। साथ ही, आप इसे प्रत्येक अनुरोध में बदल सकते हैं और यह पता लगाने के लिए एक कुकी जोड़ सकते हैं कि आपने कौन सा "संस्करण" भेजा है। उदाहरण के लिए, आपके पास दो संस्करण हो सकते हैं:
function generatePassphraseObfuscated(){
return 1;
}
function generatePassphraseObfuscated(){
return 2;
}
और उन्हें यादृच्छिक रूप से सेवा दें, और इसे कुकी के साथ पहचानें। तो आप जानते हैं कि अपने django दृश्य में किस का उपयोग करना है।
फिर से, यह विश्वसनीय नहीं है, आप जो करना चाहते हैं उसे करने का कोई मूर्ख तरीका नहीं है। यह अन्य लोगों के प्रतिकृति के लिए बदसूरत बनाने के लिए सिर्फ एक मूर्ख तरीका है।
आप इसे कैसे कॉल करने जा रहे हैं? एक अजाक्स कॉल? या सिर्फ अपने स्वयं के ऐप के लिए एक वेब सेवा के रूप में आंतरिक रूप से। – santiagobasulto
@ सैंटियागोबासुलटो यह एक अजाक्स कॉल है, मैं एपीआई को सार्वजनिक रूप से उपलब्ध नहीं करना चाहता हूं। आइडिया केवल इस एप्लिकेशन का उपयोग वेब एप्लिकेशन के माध्यम से करना है जिसे मैं बना रहा हूं। – abhiomkar
मैं इस बारे में उत्सुक हूं और सोच रहा हूं कि इसे कवर करने के लिए सीएसआरएफ का विस्तार करना आम बात क्यों नहीं है? या कम से कम यह django दस्तावेज़ों में प्रलेखित प्रतीत नहीं होता है। ऐसा लगता है कि सीएसआरएफ सुरक्षा को ट्रिगर करने के लिए सभी AJAX कॉल को POST पर स्विच किया जा सकता है लेकिन यह बहुत हैकी लगता है। – MichaelJones