2017-01-05 10 views
9

मेरे पास सिम्फनी 2.8.11 और फोसयूसरबंडल 2.0.0-बीटा 1 में लिखा गया एप्लिकेशन है। उपयोगकर्ता वीपीएन या मूल लेख के माध्यम से साइट से कनेक्ट कर सकते हैं। अधिकतर वे विंडोज 7 पर इंटरनेट एक्सप्लोरर 11 का उपयोग करते हैं। उनमें से कुछ साइट के अंदर यादृच्छिक रूप में एक अवैध सीएसआरएफ टोकन समस्या का सामना कर रहे हैं। समस्या यह है कि उपयोगकर्ता पृष्ठ को रीफ्रेश करने के बाद भी फ़ॉर्म सबमिट नहीं कर सकते हैं।सिम्फनी 2: अमान्य सीएसआरएफ टोकन मुझे प्रमाणीकरण याद रखें

मुझे लगता है कि समस्या सत्र के निरंतर ताज़ा के कारण होता है, लॉग से:

{ 
    "created":1483610056, 
    "lastUsed":1483610056 
} ["csrf","session_times"] [] 

इसके अलावा, मुझे लगता है कि यह प्रमाणीकरण के कारण होता है से याद मुझे टोकन (हर समस्या से प्रमाणीकृत किया गया है उस टोकन):

[2017-01-05 10:54:16] security.DEBUG: Remember-me cookie detected. [] [] 
[2017-01-05 10:54:16] security.INFO: Remember-me cookie accepted. [] [] 
[2017-01-05 10:54:16] security.DEBUG: Populated the token storage with a remember-me token. [] [] 

मेरे सुरक्षा config:

... 
main: 
    pattern: ^/ 
    form_login: 
     provider: fos_userbundle 
     csrf_token_generator: security.csrf.token_manager 
     # if you are using Symfony < 2.8, use the following config instead: 
     # csrf_provider: form.csrf_provider 
    logout:  true 
    anonymous: true 
    remember_me: 
     name: "%session_cookie_remember_name%" 
     domain: "%session_cookie_domain%" 
     key:  "%secret%" 
     lifetime: 604800 
     path: /
    switch_user: true 
... 

क्या यह संभव है कि प्रत्येक बार पृष्ठ लोड होने पर सत्र पुन: प्रारंभ हो जाए और याद रखें कि मुझे इसे प्रमाणित किया गया है? क्या यह बग या सही व्यवहार है? मैं csrf अमान्य टोकन समस्या से कैसे छुटकारा पा सकता हूं?

एक पृष्ठ अनुरोध से पूर्ण लॉग जब मुद्दा आ गया:

[2017-01-05 10:54:16] request.INFO: Matched route "fos_user_profile_show". 
{ 
    "route_parameters":{ 
    "_controller":"AppBundle\\Controller\\ProfileController::showAction", 
    "lang":"pl", 
    "_route":"fos_user_profile_show" 
    }, 
    "request_uri":"..." 
} [] 
[2017-01-05 10:54:16] security.DEBUG: Remember-me cookie detected. [] [] 
[2017-01-05 10:54:16] security.INFO: Remember-me cookie accepted. [] [] 
[2017-01-05 10:54:16] security.DEBUG: Populated the token storage with a remember-me token. [] [] 
[2017-01-05 10:54:16] app.DEBUG: 
{ 
    "USER":"www-data", 
    "HOME":"\/var\/www", 
    "HTTP_COOKIE":"safeId=51081905; nlPopup=shown; cookieInfo=1; __cfduid=d7b03b629331902c712642a374b52b3711476715148; auth=1a2dd1f7a8b16bf7d31988bf968748b5; VMREMEMBERME=QXBwQnVuZGxlXEVudGl0eVxVc2VyOmMydHNaWEF6TkRKQVluSmhibVJpY1M1d2JBPT06MTQ4NDA1MjAxNzoyODM1NWViMThkN2EwMDQ2MGUzNzVmNzg4ZGYwYWE2NzliNTcwOGJiY2E4ZDk0ZGE4YzJhZTFmZTRlMThlMjhh; VMSESSID=4oupq2fgt72vc8lnqff0g9op44", 
    "HTTP_CONNECTION":"Keep-Alive", 
    "HTTP_DNT":"1", 
    "HTTP_HOST":"sub.domain.com", 
    "HTTP_ACCEPT_ENCODING":"gzip, deflate", 
    "HTTP_USER_AGENT":"Mozilla\/5.0 (Windows NT 6.1; WOW64; Trident\/7.0; rv:11.0) like Gecko", 
    "HTTP_ACCEPT_LANGUAGE":"pl-PL", 
    "HTTP_ACCEPT":"text\/html, application\/xhtml+xml, *\/*", 
    "SCRIPT_FILENAME":"\/data\/www\/project\/web\/app.php", 
    "REDIRECT_STATUS":"200", 
    "SERVER_NAME":"sub.domain.com", 
    "SERVER_PORT":"80", 
    "SERVER_ADDR":"x.x.x.x", 
    "REMOTE_PORT":"x", 
    "REMOTE_ADDR":"x.x.x.x", 
    "SERVER_SOFTWARE":"nginx\/1.10.0", 
    "GATEWAY_INTERFACE":"CGI\/1.1", 
    "REQUEST_SCHEME":"http", 
    "SERVER_PROTOCOL":"HTTP\/1.1", 
    "DOCUMENT_ROOT":"\/data\/www\/project\/web", 
    "DOCUMENT_URI":"\/app.php", 
    "REQUEST_URI":"...", 
    "SCRIPT_NAME":"\/app.php", 
    "CONTENT_LENGTH":"", 
    "CONTENT_TYPE":"", 
    "REQUEST_METHOD":"GET", 
    "QUERY_STRING":"...", 
    "FCGI_ROLE":"RESPONDER", 
    "PHP_SELF":"\/app.php", 
    "REQUEST_TIME_FLOAT":1483610056.9177, 
    "REQUEST_TIME":1483610056 
} ["csrf","server"] [] 
[2017-01-05 10:54:16] app.DEBUG: 
{ 
    "safeId":"51081905", 
    "nlPopup":"shown", 
    "cookieInfo":"1", 
    "__cfduid":"d7b03b629331902c712642a374b52b3711476715148", 
    "auth":"1a2dd1f7a8b16bf7d31988bf968748b5", 
    "VMREMEMBERME":"QXBwQnVuZGxlXEVudGl0eVxVc2VyOmMydHNaWEF6TkRKQVluSmhibVJpY1M1d2JBPT06MTQ4NDA1MjAxNzoyODM1NWViMThkN2EwMDQ2MGUzNzVmNzg4ZGYwYWE2NzliNTcwOGJiY2E4ZDk0ZGE4YzJhZTFmZTRlMThlMjhh", 
    "VMSESSID":"4oupq2fgt72vc8lnqff0g9op44" 
} ["csrf","cookies"] [] 
[2017-01-05 10:54:16] app.DEBUG: 
{ 
    "cookie":[ 
     "safeId=51081905; nlPopup=shown; cookieInfo=1; __cfduid=d7b03b629331902c712642a374b52b3711476715148; auth=1a2dd1f7a8b16bf7d31988bf968748b5; VMREMEMBERME=QXBwQnVuZGxlXEVudGl0eVxVc2VyOmMydHNaWEF6TkRKQVluSmhibVJpY1M1d2JBPT06MTQ4NDA1MjAxNzoyODM1NWViMThkN2EwMDQ2MGUzNzVmNzg4ZGYwYWE2NzliNTcwOGJiY2E4ZDk0ZGE4YzJhZTFmZTRlMThlMjhh; VMSESSID=4oupq2fgt72vc8lnqff0g9op44" 
    ], 
    "connection":[ 
     "Keep-Alive" 
    ], 
    "dnt":[ 
     "1" 
    ], 
    "host":[ 
     "sub.domain.com" 
    ], 
    "accept-encoding":[ 
     "gzip, deflate" 
    ], 
    "user-agent":[ 
     "Mozilla\/5.0 (Windows NT 6.1; WOW64; Trident\/7.0; rv:11.0) like Gecko" 
    ], 
    "accept-language":[ 
     "pl-PL" 
    ], 
    "accept":[ 
     "text\/html, application\/xhtml+xml, *\/*" 
    ], 
    "content-length":[ 
     "" 
    ], 
    "content-type":[ 
     "" 
    ], 
    "x-php-ob-level":[ 
     1 
    ] 
} ["csrf","headers"] [] 
[2017-01-05 10:54:16] app.DEBUG: [] ["csrf","session"] [] 
[2017-01-05 10:54:16] app.DEBUG: 
{ 
    "created":1483610056, 
    "lastUsed":1483610056 
} ["csrf","session_times"] [] 
[2017-01-05 10:54:16] app.DEBUG: 
{ 
    "name":"xxx", 
    "address":"xxx", 
    "city":"xxx", 
    "phoneNumber":"xxx", 
    "lang":"xx", 
    "save":"", 
    "_token":"ms-TX5_Du6lh3BqV2RB2CvQaEJ8WzuPBCeduAJox3ik" 
} ["csrf","data"] [] 
[2017-01-05 10:54:16] security.DEBUG: Stored the security token in the session. {"key":"_security_main"} [] 
+0

शायद इसका फॉर्म के पेज के लिए ब्राउज़र कैश के साथ कुछ करना है? – user2190492

+0

लेकिन सत्र हमेशा 'ताजा' क्यों होता है (आखिरी बार इस्तेमाल किया गया समय = निर्मित समय)? – dees91

+0

मुझे यह महसूस हो रहा है कि टोकन के साथ सत्र कई बार बनाया गया है, और सत्र ओवरराइट किया गया है? क्या यह समस्या केवल तभी होती है जब कोई याद रखने के माध्यम से प्रमाणित करता है? – user2190492

उत्तर

2

मैं आपका बिंदु मिल गया, कुछ देर इस CSRF जनरेटर की वजह से होता है। आपको अपनी config.yml फ़ाइल को बदलना होगा और सीएसआरएफ जेनरेटर लाइन को टिप्पणी करना होगा उदा।

... 
main: 
    pattern: ^/ 
    form_login: 
     provider: fos_userbundle 
     #csrf_token_generator: security.csrf.token_manager 
     # if you are using Symfony < 2.8, use the following config instead: 
     # csrf_provider: form.csrf_provider 
    logout:  true 
    anonymous: true 
    remember_me: 
     name: "%session_cookie_remember_name%" 
     domain: "%session_cookie_domain%" 
     key:  "%secret%" 
     lifetime: 604800 
     path: /
    switch_user: true 
... 

अब उनके पास सीएसआरएफ टोकन के लिए कोई शर्त नहीं है।

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