संशोधन करने के लिए जीईटी अनुरोधों का उपयोग न करें! RESTful बनें; POST (या PUT) का उपयोग करें, इसके बजाय ब्राउज़र को उपयोगकर्ता को चेतावनी देना चाहिए कि अनुरोध को पुनः लोड न करें। POST/PUT अनुरोध के बाद सामान्य GET अनुरोध का उपयोग करके एक रसीद पृष्ठ पर रीडायरेक्टिंग (using HTTP redirection) पुन: सबमिट करने के बारे में चेतावनी दिए बिना पृष्ठ को रीफ्रेश करना संभव कर देगा।
संपादित करें:
मैं उपयोगकर्ता किसी भी तरह में लॉग ऑन है मान, और इसलिए आप allready, उदा उपयोगकर्ता ट्रैकिंग के कुछ रास्ता है सत्र या इसी तरह के।
आप बना सकते हैं एक टाइमस्टैम्प (या एक यादृच्छिक हैश आदि ..) जब प्रपत्र एक छिपी हुई फ़ील्ड के रूप में यह दोनों भंडारण प्रदर्शित (सिर्फ विरोधी पार साइट अनुरोध टोकन के अलावा मुझे यकीन है कि आप allready वहाँ है हूँ) , और एक सत्र चर (जो आपके सर्वर पर सुरक्षित रूप से संग्रहीत है) में, जब आप इस फ़ॉर्म के लिए POST/PUT अनुरोध प्राप्त करते हैं, तो आप जांचते हैं कि टाइमस्टैम्प सत्र में एक जैसा ही है। यदि ऐसा है, तो आप सत्र में टाइमस्टैम्प को कुछ परिवर्तनीय और अनुमान लगाने में कठोर (उदाहरण के लिए कुछ गुप्त स्ट्रिंग के साथ समेकित टाइमस्टैम्प) सेट करते हैं, तो आप फॉर्म डेटा को सहेज सकते हैं। अगर कोई अनुरोध अब दोहराता है तो आपको सत्र चर में एक ही मूल्य नहीं मिलेगा और अनुरोध को अस्वीकार कर दिया जाएगा।
ऐसा करने में समस्या यह है कि यदि उपयोगकर्ता कुछ बदलने के लिए वापस क्लिक करता है तो यह फ़ॉर्म अमान्य है, और यह कठोर होने के लिए थोड़ा सा हो सकता है, जब तक कि यह आपके द्वारा अपडेट किए जा रहे पैसे न हो। इसलिए यदि आपको "बेवकूफ" उपयोगकर्ताओं के साथ समस्याएं हैं जो रीफ्रेश करते हैं और बैक-बटन पर क्लिक करते हैं तो इस प्रकार गलती से कुछ पोस्ट कर रहे हैं, बस POST का उपयोग करके उन्हें याद दिलाया जाएगा कि ऐसा करने के लिए, और रीडायरेक्ट करने से इसकी संभावना कम हो जाएगी। यदि आपको दुर्भावनापूर्ण उपयोगकर्ताओं के साथ कोई समस्या है, तो आपको टाइमस्टैम्प का भी उपयोग करना चाहिए, भले ही यह कभी-कभी उपयोगकर्ताओं को भ्रमित कर दे, भले ही उपयोगकर्ता जानबूझ कर उसी संदेश को पोस्ट कर रहे हों, शायद आपको उन पर प्रतिबंध लगाने का एक तरीका ढूंढना होगा। POST का उपयोग करके, टाइमस्टैम होने और डुप्लिकेट पोस्ट की जांच करने के लिए पूरे डेटाबेस की पूर्ण तुलना करने से भी, यदि दुर्भावनापूर्ण उपयोगकर्ता केवल फॉर्म लोड करने और यादृच्छिक कचरा सबमिट करने के लिए एक स्क्रिप्ट लिखते हैं, तो यह आपकी सहायता नहीं करेगा। (लेकिन क्रॉस-साइट-अनुरोध सुरक्षा बहुत कठिन बनाती है)
स्रोत
2008-11-20 15:47:31
ओपी सिस्टम को गड़बड़ाने वाले अपने उपयोगकर्ताओं के बारे में शिकायत कर रहा है। "अपने ब्राउजर को कोशिश करने और रोकने के लिए" कहें, समस्या के लिए शायद ही कभी कास्ट आयरन समाधान है। –
नहीं, लेकिन यह सौम्य उपयोगकर्ताओं को ऐसा करने की संभावना कम करता है, मैंने समस्या को और कम करने के लिए कुछ विचार जोड़े। –