2015-05-18 6 views
7

के लिए स्प्रिंग सिक्योरिटी 4.x टैगलिब है क्या मैं स्प्रिंग सिक्योरिटी 4.x और जेएसएफ 2.2 का उपयोग करके एक परियोजना में काम कर रहा हूं। मैंने अभी देखा है कि इस संस्करण में वसंत सुरक्षा डिफ़ॉल्ट रूप से अनुरोध टोकन का उपयोग कर क्रॉस साइट अनुरोध फोर्जरी के खिलाफ सुरक्षा सक्षम है, मामला यह है कि आपको कई पृष्ठों में टैग <sec:csrfMetaTags> टैग करना होगा (यदि नहीं, वसंत अनुरोध अस्वीकार कर देता है), lib spring-faces 2.4.1 में है जिसमें फेसलेट्स (एक्सएचटीएमएल) के लिए ये टैग नहीं हैं।क्या फेसलेट

मैंने इन ढांचे का उपयोग करके अपनी परियोजना को काम करने के लिए एक कार्यान्वयन खोजने की कोशिश की लेकिन मुझे कोई नहीं मिला, क्या आप कोई अनुकूलन जानते हैं?

मेरे मामले में, यदि मैंने कोई सार्वजनिक अनुकूलन नहीं किया है, तो मुझे केवल उस हिस्से को अनुकूलित किया गया है, यदि मुझे कोई ओपन सोर्स प्रोजेक्ट में डालने में खुशी होगी और सभी लाइब्रेरी को अनुकूलित करने का प्रयास करें।

धन्यवाद।

अद्यतन

मैं एक ब्लॉग पोस्ट मेरी समाधान समझा बनाया: http://halexv.blogspot.mx/2015/07/spring-security-4x-csrf-protection-for.html

+0

आप इसे केवल प्रपत्र पदों के लिए की जरूरत है? –

+0

इस समय मैं जिन कार्यों का उपयोग कर रहा हूं वे सीएसआरएफ (दो फ़ंक्शंस) के लिए हैं, मैंने पहले ही इसे पोर्ट किया था लेकिन मैंने कई रोचक फ़ंक्शन देखे। – AlexITC

+1

वर्तमान में इसके लिए कोई कार्यान्वयन नहीं है, इसलिए आपको अपना खुद का बनाना होगा। स्प्रिंग फेसेस और स्प्रिंग सिक्योरिटी 4 संयोजन के साथ और अधिक समस्याएं हैं जो स्प्रिंग सिक्योरिटी से हटाए गए तरीकों आदि के रूप में हैं लेकिन अभी भी वसंत चेहरे में उपयोग की जाती हैं। –

उत्तर

1

आप JSF आप इस लिंक से एक्सेस कर सकते हैं, जिसके लिए वसंत taglib है।

http://docs.spring.io/spring-webflow/docs/current/reference/html/spring-faces.html#spring-faces-security-taglib

मेरा मानना ​​है कि आप पहले से ही यह जानता हूँ। लेकिन आपका वास्तविक प्रश्न सीआरएसएफ से संबंधित है जो आपको अपने सभी पृष्ठों में जोड़ना होगा। इस विशिष्ट में नीचे के रूप में

एक util वर्ग बना सकते हैं और एक टोकन जनरेटर

static String getTokenForSession (HttpSession session) { 
String token = null; 
    synchronized (session) { 
    token = (String) session.getAttribute(CSRF_TOKEN_FOR_SESSION_ATTR_NAME); 
    if (null==token) { 
     token=UUID.randomUUID().toString(); 
     session.setAttribute(CSRF_TOKEN_FOR_SESSION_ATTR_NAME, token); 
    } 
} 
return token; 
} 

जोड़ने अपने फ़ॉर्म में स्वचालित रूप से टोकन जोड़कर प्राप्त किया जा सकता लागू RequestDataValueProcessor

public class CSRFRequestDataValueProcessor implements RequestDataValueProcessor { 
... 
@Override 
public Map<String,String> getExtraHiddenFields(HttpServletRequest request) { 
    Map<String,String> hiddenFields = new HashMap<String,String>(); 
    hiddenFields.put(CSRFTokenManager.CSRF_PARAM_NAME, CSRFTokenManager.getTokenForSession(request.getSession())); 
    return hiddenFields; 
    } 
} 

फिर परिभाषित करें सेम

<bean name="requestDataValueProcessor" class="com...CSRFRequestDataValueProcessor"/> 

creadit संदर्भ - http://blog.eyallupu.com/2012/04/csrf-defense-in-spring-mvc-31.html

+0

वसंत चेहरे 2.4.1 (बहुत पुराना) पर है, मैंने फेसलेट के लिए सीएसआरएफ भाग को अनुकूलित किया, मैं कुछ वसंत चेहरे 4.x की तलाश में हूं, कम से कम – AlexITC

+0

स्प्रिंग फेस स्प्रिंग वेबफ्लो का हिस्सा है जो संस्करण 2.4.1 पर है। वसंत चेहरे वसंत या वसंत सुरक्षा से संबंधित नहीं है ... तो एक संस्करण 4 खोजने की कोशिश कुछ भी नहीं मिलेगा। –

+0

'RequestDataValueProcessor' का उपयोग कर उत्तर के संबंध में यह काम नहीं करेगा, यह केवल उस मामले में काम करेगा जहां स्प्रिंग्स के 'फॉर्म' टैग का उपयोग किया जाता है, मुझे अत्यधिक संदेह है कि यह जेएसएफ के लिए उपलब्ध है। उसके आगे [वसंत सुरक्षा] (http: //docs.spring।आईओ/ऑटोरेपो/डॉक्स/स्प्रिंग-सिक्योरिटी/वर्तमान/एपिडॉक्स/ऑर्ग/स्प्रिंगफ्रेमवर्क/सुरक्षा/वेब/सर्वलेट/सपोर्ट/सीएसआरएफ/सीएसआरएफआरक्वेटडेटा वैल्यूप्रोसेसर.html) पहले से ही इसके लिए एकीकरण है इसलिए स्वयं को लिखने की कोई आवश्यकता नहीं है। –

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