2017-12-31 33 views
0

사용자 계정에 로그인 할 때 손상된 콘텐츠 오류가 발생하는 웹 사이트가 있습니다. 이 오류는 Firefox에서 발생합니다. 클린 캐시로 로그인 할 때만 발생합니다. 한 번 로그인하면 오류가 발생하지만 건너 뜁니다. 그런 다음 로그 아웃하고 다시 로그인하면 기록을 지울 때까지 더 이상 문제를 해결할 수 없습니다. 기록 및 모든 캐시를 지우고 사이트로 돌아가서 다시 로그인하면 동일한 오류가 발생합니다. 나는 같은 시나리오와 크롬에서 Microsoft Edge에서 다른 오류 메시지를 보았지만 그들이 말한 것을 기억하지 못한다. (나는 Edge가 사이트에 연결할 수 없다고 말했고 크롬은 뭔가 다른 것을 말한 것으로 생각한다.) 나는 주변을 둘러 보았고 도대체 무슨 일이 일어나고 있는지 알아 내려고 해결책을 찾고 있었다. 그러나 나는 길을 잃었다.로그인시 firefox에서 웹 사이트가 손상되었습니다.

인터넷에서 쿠키를 지워서 해결할 수 있다고 한 가지를 보았지만이 사이트에는 쿠키를 보관하지 않습니다. 그리고 제 상황 - 그것은 신선한 역사 또는 문제가되는 정리 역사입니다. 따라서이 유형의 해결책은 제 상황과 반대입니다.

내 SSL 인증서인지 잘 모르겠습니다. 내가 namecheap에서 샀다. 나는 그것이 내 nginx 파일과 관련이 있는지 알지 못한다. 거기에서 나는 모든 HTTP를 https로 강제로 리다이렉션한다. 내 코드 자체와 관련이 있는지 알 수 없습니다. 내 서버 코드는 CakePHP 2로 코딩되어 있습니다.

아이디어가 있으십니까? 정말이 문제를 해결해야합니다. 곧이 사이트를 시작하려고합니다.

여기 내의 nginx 코드 :

server { 
    listen 80; 
    listen [::]:80; 

    server_name my_server_name.com; 
    return 301 https://$server_name/web/$request_uri/; 
} 

server { 
    listen 443 ssl http2 default_server; 
    listen [::]:443 ssl http2 default_server ipv6only=on; 

    root /usr/share/nginx/html; 
    index index.html index.htm index.php; 

    ssl on; 
    ssl_certificate /path_to_ssl/cert_chain.crt; 
    ssl_certificate_key /path_to_ssl/my_server_name.key; 

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on; 
    ssl_dhparam /path_to_ssl_certs/dhparam.pem; 
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; 
    ssl_session_timeout 1d; 
    ssl_session_cache shared:SSL:50m; 
    ssl_stapling on; 
    ssl_stapling_verify on; 
    add_header Strict-Transport-Security max-age=15768000; 

    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains"; 

    location /web { 
     alias /usr/share/nginx/html/web/app/webroot; 
     try_files $uri $uri/ /web/app/webroot/index.php; 
    } 

    server_name my_server_name.com; 

    location =/{ 
     return 301 https://$server_name/web/$request_uri/; 
    } 

    location/{ 
     # First attempt to serve request as file, then 
     # as directory, then fall back to displaying a 404. 
     try_files $uri $uri/ =404; 
     # Uncomment to enable naxsi on this location 
     # include /etc/nginx/naxsi.rules 
    } 

    error_page 404 /404.html; 
    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root /usr/share/nginx/html; 
    } 

    location ~ \.php$ { 
     try_files $uri =404; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 
     fastcgi_index index.php; 
     include fastcgi.conf; 
     #include fastcgi_params; 
     #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    } 

    location ~ /.well-known { 
     allow all; 
    } 

    location ~ /.sandbox { 
    } 

    location ~* \.(?:manifest:appcache|htm?|xml|json)$ { 
     expires -1; 
    } 

업데이트 :이 문제에 대한 또 다른 단서를 발견하지만, 그것을 해결하지 못하고

. 내 debug.log에서 "손상된 컨텐트 오류"가 발생할 때마다이 오류가 발생한다는 것을 알았으며 다른 시간에는 발생하지 않았습니다. 이것은이 CakePHP AuthComponent에 오류가 :

2017-12-31 09:07:28 Notice: Notice (8): Undefined index: element in [/usr/share/nginx/html/web/app/Controller/Component/AuthComponent.php, line 827] 
Trace: 
ErrorHandler::handleError() - CORE/Cake/Error/ErrorHandler.php, line 230 
AuthComponent::flash() - APP/Controller/Component/AuthComponent.php, line 827 
AuthComponent::_unauthenticated() - APP/Controller/Component/AuthComponent.php, line 362 
AuthComponent::startup() - APP/Controller/Component/AuthComponent.php, line 304 
ObjectCollection::trigger() - CORE/Cake/Utility/ObjectCollection.php, line 128 
CakeEventManager::dispatch() - CORE/Cake/Event/CakeEventManager.php, line 243 
Controller::startupProcess() - CORE/Cake/Controller/Controller.php, line 678 
Dispatcher::_invoke() - CORE/Cake/Routing/Dispatcher.php, line 189 
Dispatcher::dispatch() - CORE/Cake/Routing/Dispatcher.php, line 167 
require - APP/webroot/index.php, line 110 
[main] - ROOT/index.php, line 43 

(가) $ this-가> 플래시가이 선에 대한 인덱스 '요소'가 없다고 말하고있다 :

$this->Session->setFlash($message, $this->flash['element'], $this->flash['params'], $this->flash['key']); 

내가 밖으로 그 라인을 주석하고 교체를 이 번호는 다음과 같습니다.

$this->Session->setFlash(
       $message, 
       array_key_exists('element', $this->flash) ? $this->flash['element'] : 'default', 
       array_key_exists('params', $this->flash) ? $this->flash['params'] : array(), 
       array_key_exists('key', $this->flash) ? $this->flash['key'] : 'flash' 
      ); 

해결 방법은 다음과 같습니다.

로그 아웃하고 모든 캐시를 지우고 모든 것을 다시로드 한 다음 다시 로그인하면 여전히 손상된 콘텐츠 오류가 발생하지만 변경 한 후에는 debug.log에 새로운 오류가 기록되지 않습니다. 그래서 그것은 나의 단서이지만, 나는 그것을 고칠 수 있었다.

업데이트 : 내 요청 & 응답 헤더

는 여기에이 오류가 발생하면 파이어 폭스가 나를 보여줍니다 요청 & 응답 헤더입니다.

요청 헤더 :

Accept 
text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8 
Accept-Encoding 
gzip, deflate, br 
Accept-Language 
en-US,en;q=0.5 
Connection 
keep-alive 
Content-Length 
89 
Content-Type  
application/x-www-form-urlencoded 
Cookie 
__cfduid=dc953b88930da52f0ae3f…9-3f87-477c-b65e-380b2034aa54 
Host  
my_website_url 
Referer 
https://my_website_url.com/web/users/login 
Upgrade-Insecure-Requests 
1 
User-Agent 
Mozilla/5.0 (X11; Ubuntu; Linu…) Gecko/20100101 Firefox/57.0 

그리고 응답 : 당신은 당신이 어떤 쿠키를 사용하지 않는 생각하지만

cf-ray: 3d76d2695c6655c4-ORD 
content-type  
text/html; charset=UTF-8 
date  
Wed, 03 Jan 2018 14:59:26 GMT 
location  
/// 
server 
cloudflare 
set-cookie 
CAKEPHP=le4cq2kpkvjqvt5lvcqel8…400; path=/; secure; HttpOnly 
strict-transport-security 
max-age=15768000 
X-Firefox-Spdy 
h2 
+0

왜 '엄격 전송 보안'을 두 번 설정 했습니까? –

+0

Richard Smith 님 감사합니다. 나는 심지어 그것을 알아 차리지 못했다. 그것은 의도하지 않은 것입니다. 그것은 그 문제의 원인 일 수 있습니까? 나는 그것이 맞는지 아닌지 알아봐야한다. – user904542

+0

첫 번째 Strict-Transport-Security 라인을 제거하고 내 nginx를 다시 시작했지만 여전히 동일한 문제가 있습니다. – user904542

답변

0

는 인증 자체가 아마 하나 개의 쿠키를 저장합니다.캐시를 지우면이 문제가 발생합니다. 즉, 한 자원에 액세스하는 것은 문제가 있지만 나중에 다른 호출로 해결됩니다.

당신의 설정 디버깅을위한 몇 가지 팁 : 당신의 SSL 스테이플 링 구성으로

  • 가 불완전,
  • 청취자의 http2 지시어를 제거 ssl_stapling 두 지시어를 모두 제거하려고 ssl_stapling_verify
  • 손상된 내용이 올 수 있습니다 무한 루프에서 2 301 리디렉션이 구성에 있습니다. https 웹 사이트 (server_name과 my_server_name.com)에 직접 액세스하십시오.이 두 가지 이름을 사용하십시오. 여전히 원인을 찾지 못하면 : 80 수신기에서 리디렉션을 제거하고 SSL없이 사이트를 탐색하십시오.
+0

감사합니다. 귀하의 제안을 검토하겠습니다. 또한 오류가 발생하면 요청 및 응답 헤더를 추가했습니다. – user904542

+0

위치 응답 헤더에 문제가 있습니다. ///; –

+0

SSL을 사용하지 않고 내 사이트를 사용하는 데 문제가 있다는 것은 새로운 사용자가 사용자 이름과 비밀번호로 자신의 계정을 만들고 로그인 할 수있는 사용자 등록 및 사용자 계정 시스템이 있다는 것입니다. – user904542

관련 문제