2014-05-07 11 views
6

मैं स्ट्रैट टोकन इंटरसेप्टर का उपयोग करके सीएसआरएफ हमलों से अपने वेब एप्लिकेशन की रक्षा करने की कोशिश कर रहा हूं।स्ट्रूट 2 टोकन इंटरसेप्टर: सीएसआरएफ सुरक्षा

जिस समस्या का मैं सामना कर रहा हूं वह है कि हमारे जेएसपी पेज सर्वर पर एक से अधिक कॉल करते हैं (जबकि जेएसपी जेएस में परिवर्तित हो जाता है, एक स्ट्रैट टोकन जेएस में जोड़ा जाता है। लेकिन इस जेएस में कई अजाक्स अनुरोध हैं। मुझे आशा है कि मैं मैं खुद को स्पष्ट कर रहा हूं।), टोकन इंटरसेप्टर की वजह से केवल सर्वर के लिए पहला अनुरोध मान्य हो रहा है। अन्य अनुरोध अमान्य हो रहे हैं क्योंकि स्ट्रेट्स टोकन प्रत्येक सत्यापन के बाद रीसेट किया जाता है।

क्या कोई तरीका है जब मैं स्ट्रेट को हर बार मान्य करता हूं तो टोकन को रीसेट करने से रोकता हूं? स्ट्रैट्स इंटरसेप्टर में इसे संभालने के लिए कोई अन्य समाधान है।

मैं भी tomcatcsrfprotection मॉड्यूल देख रहा हूं, मुझे लगता है कि मैं यहां भी एक ही समस्या के साथ समाप्त हो जाऊंगा।

managepage.jsp:

<s:token /> 
<script type="text/javascript"> 
var strutsToken = "<s:property value="#session['struts.tokens.token']" />"; 
var requestParams = {mainAction: 'loadGroups','struts.token.name': 'token' , token:strutsToken}; 

Ext.Ajax.request({ 
       url: 'manageUserAccount.action', 
       params: Ext.urlEncode(requestParams), 
       disableCaching: true, 
       success: this.actionCallback 
       }); 



//loading widgets 

var requestParams = {mainAction: 'loadusers','struts.token.name': 'token' , token:strutsToken}; 

Ext.Ajax.request({ 
       url: 'manageUserAccount.action', 
       params: Ext.urlEncode(requestParams), 
       disableCaching: true, 
       success: this.actionCallback 
       }); 

</script> 

Struts.xml:

<action name="manageUserAccountEdit" class="ManageUserAccountEditAction"> 
    <interceptor-ref name="csrf-protection" /> 
    <result name="success">/pages/manageUserAccount.jsp</result> 
</action> 

ताकि समझने यह आसान हो जाएगा मैं सिर्फ न्यूनतम कोड जोड़ लिया है।

+0

आपका क्या मतलब है * jsp पेज सर्वर पर एक से अधिक कॉल करता है *? –

+0

मुझे क्लाइंट पेज में एक ही टोकन का उपयोग करके एकाधिक AJAX अनुरोध करने की आवश्यकता है। – Mok

+0

जबकि जेएसपी जेएस में परिवर्तित हो जाता है, एक स्ट्रैट टोकन जेएस में जोड़ा जाता है। इस जेएस में कई अजाक्स अनुरोध हैं। मुझे उम्मीद है कि मैं खुद को स्पष्ट कर रहा हूं। – Mok

उत्तर

2

आप टोकन लौटने वाली क्रिया बनाने के लिए Unable to implement Struts 2 token interceptor with hyperlink के लिए मेरे उत्तर में कोड का उपयोग कर सकते हैं। अजाक्स सफलता कॉलबैक परिणाम के रूप में टोकन वापस करने के लिए आप किसी भी परिणाम stream या json या dispatcher का उपयोग कर सकते हैं। आप jQuery Ajax - issue returning JSON value में एक उदाहरण पा सकते हैं। अब आप अपने अजाक्स अनुरोध करने के लिए टोकन का उपयोग कर सकते हैं। प्रत्येक बार आपको एक नया अनुरोध करने की आवश्यकता होती है, आपको एक नया टोकन प्राप्त करने के लिए टोकन एक्शन कॉल करना चाहिए। अपने अनुरोध के पैरामीटर के रूप में टोकन का उपयोग करें और अपने कार्यों के सामने टोकन इंटरसेप्टर डालें।

संबंधित मुद्दे