Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(91)

Unified Diff: net/http/http_log_util.cc

Issue 361053002: Elide data reduction proxy credentials from NetLog (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | net/http/http_log_util_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/http/http_log_util.cc
diff --git a/net/http/http_log_util.cc b/net/http/http_log_util.cc
index ab6ebda74aca0be5b39b9bfc046e91943e20c4bd..570232fc3e75be5e049372094825c68b7de51bce 100644
--- a/net/http/http_log_util.cc
+++ b/net/http/http_log_util.cc
@@ -7,6 +7,7 @@
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "net/http/http_auth_challenge_tokenizer.h"
+#include "net/http/http_util.h"
namespace net {
@@ -33,39 +34,57 @@ bool ShouldRedactChallenge(HttpAuthChallengeTokenizer* challenge) {
} // namespace
+#if defined(SPDY_PROXY_AUTH_ORIGIN)
+void ElideChromeProxyDirective(const std::string& header_value,
+ const std::string& directive,
+ std::string::const_iterator* redact_begin,
+ std::string::const_iterator* redact_end) {
+ HttpUtil::ValuesIterator it(header_value.begin(), header_value.end(), ',');
+ while (it.GetNext()) {
+ if (LowerCaseEqualsASCII(it.value_begin(),
+ it.value_begin() + directive.size(),
+ directive.c_str())) {
+ *redact_begin = it.value_begin();
+ *redact_end = it.value_end();
+ return;
+ }
+ }
+}
+#endif
+
std::string ElideHeaderValueForNetLog(NetLog::LogLevel log_level,
const std::string& header,
const std::string& value) {
+ std::string::const_iterator redact_begin = value.begin();
+ std::string::const_iterator redact_end = value.begin();
#if defined(SPDY_PROXY_AUTH_ORIGIN)
- if (!base::strcasecmp(header.c_str(), "proxy-authorization") ||
- !base::strcasecmp(header.c_str(), "proxy-authenticate")) {
- return "[elided]";
+ if (!base::strcasecmp(header.c_str(), "chrome-proxy")) {
+ ElideChromeProxyDirective(value, "sid=", &redact_begin, &redact_end);
}
#endif
- if (log_level < NetLog::LOG_STRIP_PRIVATE_DATA)
- return value;
-
- // Note: this logic should be kept in sync with stripCookiesAndLoginInfo in
- // chrome/browser/resources/net_internals/log_view_painter.js.
-
- std::string::const_iterator redact_begin = value.begin();
- std::string::const_iterator redact_end = value.begin();
- if (!base::strcasecmp(header.c_str(), "set-cookie") ||
- !base::strcasecmp(header.c_str(), "set-cookie2") ||
- !base::strcasecmp(header.c_str(), "cookie") ||
- !base::strcasecmp(header.c_str(), "authorization") ||
- !base::strcasecmp(header.c_str(), "proxy-authorization")) {
- redact_begin = value.begin();
- redact_end = value.end();
- } else if (!base::strcasecmp(header.c_str(), "www-authenticate") ||
- !base::strcasecmp(header.c_str(), "proxy-authenticate")) {
- // Look for authentication information from data received from the server in
- // multi-round Negotiate authentication.
- HttpAuthChallengeTokenizer challenge(value.begin(), value.end());
- if (ShouldRedactChallenge(&challenge)) {
- redact_begin = challenge.params_begin();
- redact_end = challenge.params_end();
+ if (redact_begin == redact_end &&
+ log_level >= NetLog::LOG_STRIP_PRIVATE_DATA) {
+
+ // Note: this logic should be kept in sync with stripCookiesAndLoginInfo in
+ // chrome/browser/resources/net_internals/log_view_painter.js.
+
+ if (!base::strcasecmp(header.c_str(), "set-cookie") ||
+ !base::strcasecmp(header.c_str(), "set-cookie2") ||
+ !base::strcasecmp(header.c_str(), "cookie") ||
+ !base::strcasecmp(header.c_str(), "authorization") ||
+ !base::strcasecmp(header.c_str(), "proxy-authorization")) {
+ redact_begin = value.begin();
+ redact_end = value.end();
+ } else if (!base::strcasecmp(header.c_str(), "www-authenticate") ||
+ !base::strcasecmp(header.c_str(), "proxy-authenticate")) {
+ // Look for authentication information from data received from the server
+ // in multi-round Negotiate authentication.
+ HttpAuthChallengeTokenizer challenge(value.begin(), value.end());
+ if (ShouldRedactChallenge(&challenge)) {
+ redact_begin = challenge.params_begin();
+ redact_end = challenge.params_end();
+ }
}
}
« no previous file with comments | « no previous file | net/http/http_log_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698