web-dev-qa-db-ja.com

Apacheログにたくさんの400エラー

私たちのウェブサイトでは400エラーのデバッグに苦労しています。このような多くのエラーがあります:

10.0.0.1 - - [08/Oct/2018:14:28:07 +0200] 
"GET /les-news/palmares/detail/article/la-lettre-de-motivation-ideale-pour-une-demande-de-stage-5224/ 
HTTP/1.1" 400 131844 
"https://www.google.com/" 
"Mozilla/5.0 (Linux; Android 7.0; TECNO K7 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.91 Mobile Safari/537.36"

ユーザーがメールで問題を報告し、ブラウザでCookieをリセットすることで修正されましたが、他のCookieをリセットするだけでは不十分でした(ただし、正しく行われたかどうかはわかりません)。

プラットフォームは非常に複雑で、要求が別のサーバーに転送されるパスに応じて、 F5ロードバランサー によって処理されます。

最初に私が欲しいのは、エラーを再現できることです。URLにアクセスすると、何もないので、すべてが正常に機能するためです。

エラーのほとんどがAndroid/Chromeに起因していることに気付きました。400エラー全体の約85%です。

ここに完全なログがあります:

timestamp   October 8th 2018, 16:26:52.000
version     1
 _id        BmQSVGYB5vF-Dw_g1gVi
 _index     f5_access-2018.10.08
 _score     - 
t _type     doc
t agent     Mozilla/5.0 (Linux; Android 8.1.0; MI 8 Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.91 Mobile Safari/537.36
client_ip   10.0.0.1
client_port     41,068
facility    local2
Host        mydomain.fr
httpversion     1
id      2,503,307,391
length      0
logsource   mydomain.network.local
message     virtual=/Common/mydomain.fr_HTTP client_ip=10.0.0.1 client_port=41068 lb_server=10.153.161.12:80 Host=mydomain.fr request_port=80 username= request="GET / HTTP/1.1" server_status=400 content_length=0 resp_time=23 user_agent="Mozilla/5.0 (Linux; Android 8.1.0; MI 8 Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.91 Mobile Safari/537.36" referer=http://mydomain.fr/article/100-millions-d-euros-sciences-po-lance-la-plus-grande-levee-de-fonds-de-son-histoire_095255b4-caef-11e8-896c-7d05c73a49da/ ID=2503307391 timestamp=2018-10-08T16:26:52+0200 pool=/Common/POOL_ETUDIANT_v2_nocache
pool        POOL_MYDOMAIN_v2_nocache
program     f5_access
referer     http://mydomain.fr/article/100-millions-d-euros-sciences-po-lance-la-plus-grande-levee-de-fonds-de-son-histoire_095255b4-caef-11e8-896c-7d05c73a49da/
request     /
request_port    80
server_ip   10.0.0.1
server_port     80
severity    Informational
status      400
stdstatus   4xx
stdvirtual  mydomain_fr_HTTP
tags        f5_access
time        23
timestamp   October 8th 2018, 16:26:52.000
type        f5_access
verb        GET
virtual     mydomain.fr_HTTP
7
COil

これは、サーバーではなくクライアントが原因である可能性が高いです(間接的には可能です)。不正なURL(404をトリガーする前に400によってブロックされたもの)だけではない場合、99%の場合、これは

  • 破損したCookie(たとえば、拡張機能が原因である可能性があります)
  • ブロックされたCookie
  • クッキーが多すぎる(一部のブラウザは大量のクッキーをブロックする)
  • 虚偽のリクエストを試みるクライアント(私は意図せずに想定します)

ブロックされたCookieの仮定をテストし、ブラウザーでCookieをブロックし、400エラーが発生するかどうかを確認する場合、残りは少しトリッキーです。次を参照してください https://airbrake.io/blog/http- errors/400-bad-request

すでにCookieの更新で修正されたとおっしゃっていたので、Cookieに関連していると思います。

編集:

私は別の見方をしています。リクエストはhttp(暗号化されていない)を介して行われ、文字列「username」を含むGETリクエストにリファラーが含まれています。これにより、実際には、そのリファラーをヘッダーに含めてサイトにアクセスしたユーザーが識別可能になり、中央の男性がリクエストをクリアテキストで表示できるようになります。

Googleが暗号化されていないHTTPトラフィックに対して一種の戦争を始めたので、Chromeはいくつかの問題を引き起こすと考えられます。これは単なる仮定ですが、これを確認またはバックアップすることはできません。しかし、それだけの価値はありますあなたはとにかくあなたのトラフィックを暗号化する必要があるので試してください。

サーバーにhttpsが設定されていますか?設定されている場合、httpsを使用するときに同じエラーを再現してみることはできますか?

6
Broco