Chromium Code Reviews| Index: components/data_reduction_proxy/browser/data_reduction_proxy_tamper_detect.h |
| diff --git a/components/data_reduction_proxy/browser/data_reduction_proxy_tamper_detect.h b/components/data_reduction_proxy/browser/data_reduction_proxy_tamper_detect.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..0034322f9da6f0df705969e22b1d7e07b031d266 |
| --- /dev/null |
| +++ b/components/data_reduction_proxy/browser/data_reduction_proxy_tamper_detect.h |
| @@ -0,0 +1,63 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef COMPONENTS_DATA_REDUCTION_PROXY_BROWSER_DATA_REDUCTION_PROXY_TAMPER_DETECT_H_ |
| +#define COMPONENTS_DATA_REDUCTION_PROXY_BROWSER_DATA_REDUCTION_PROXY_TAMPER_DETECT_H_ |
| + |
| +#include "net/http/http_response_headers.h" |
| + |
| +namespace data_reduction_proxy { |
| + |
| +// Exported for unittest |
| +// Check whether values of data reduction proxy's header Chrome-Proxy |
| +// have been tampered or not. |
| +// It takes two parameters as input, |
| +// 1. fingerprint received from data reduction proxy |
| +// 2. the response, a pointer to HttpResponseHeaders |
| +// Returns true if it has been tampered. |
| +bool CheckHeaderChromeProxy(const std::string, |
|
bolian
2014/06/27 00:49:02
const std::string& here and others.
xingx
2014/06/27 16:34:37
Done.
|
| + const net::HttpResponseHeaders*); |
| + |
| +// Exported for unittest. |
| +// Check whether there are proxies/middleboxes between Chrome |
| +// and data reduction proxy. Concretely, it checks whether there are other |
| +// proxies/middleboxes' name after data reduction proxy's name in Via header. |
| +// It takes two parameters as input, |
| +// 1. fingerprint received from data reduction proxy |
| +// 2. the response, a pointer to HttpResponseHeaders |
| +// Returns true if there are. |
| +bool CheckHeaderVia(const std::string, const net::HttpResponseHeaders*); |
| + |
| +// Exported for unittest. |
| +// Check whether the values of a predefined list of headers have been tampered. |
| +// It takes two parameters as input, |
| +// 1. fingerprint received from data reduction proxy |
| +// 2. the response, a pointer to HttpResponseHeaders |
| +// Returns true if tamper detected for these headers. |
| +bool CheckHeaderOtherHeaders(const std::string, |
| + const net::HttpResponseHeaders*); |
| + |
| +// Exported for unittest. |
| +// Check whether the Content-Length value is different from what |
| +// data reduction proxy sees. This is an indicator that the response body |
| +// have been modified. |
| +// It takes two parameters as input, |
| +// 1. fingerprint received from data reduction proxy |
| +// 2. the response, a pointer to HttpResponseHeaders |
| +// Returns true if different Content-Length value is observed. |
| +bool CheckHeaderContentLength(const std::string, |
| + const net::HttpResponseHeaders*); |
| + |
| +// The main function for detecting tamper. |
| +// It takes two parameters as input, |
| +// 1. a pointer to HttpResponseHeaders, |
| +// 2. a boolean variable indicates whether the connection |
| +// between Chrome and data reduction proxy is on HTTPS or not. |
| +// For such response, the function checks whether there is a tamper detect |
| +// request from data reduction proxy, if so, it checks whether there are |
| +// tampers and report the results to UMA. |
| +void CheckResponseFingerprint(const net::HttpResponseHeaders*, const bool); |
| + |
| +} // namespace data_reduction_proxy |
| +#endif // COMPONENTS_DATA_REDUCTION_PROXY_BROWSER_DATA_REDUCTION_PROXY_TAMPER_DETECT_H_ |