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

Unified Diff: components/password_manager/core/browser/password_manager.cc

Issue 2607413003: Add security feature to ProvisionalSavePassword (Closed)
Patch Set: Addressed nit. Created 3 years, 11 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
Index: components/password_manager/core/browser/password_manager.cc
diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc
index 491c5a600970c39d63c50a6ae063cb7a7faae1ce..574e49a609d62ddb85e4ef16312654bf97a218fd 100644
--- a/components/password_manager/core/browser/password_manager.cc
+++ b/components/password_manager/core/browser/password_manager.cc
@@ -273,6 +273,17 @@ void PasswordManager::ProvisionallySavePassword(const PasswordForm& form) {
return;
}
+ bool should_block = ShouldBlockPasswordForSameOriginButDifferentScheme(form);
+ metrics_util::LogShouldBlockPasswordForSameOriginButDifferentScheme(
+ should_block);
+ if (should_block) {
+ if (logger)
+ logger->LogSuccessiveOrigins(
+ Logger::STRING_BLOCK_PASSWORD_SAME_ORIGIN_INSECURE_SCHEME,
+ main_frame_url_.GetOrigin(), form.origin.GetOrigin());
+ return;
+ }
+
auto matched_manager_it = pending_login_managers_.end();
PasswordFormManager::MatchResultMask current_match_result =
PasswordFormManager::RESULT_NO_MATCH;
@@ -562,6 +573,15 @@ bool PasswordManager::CanProvisionalManagerSave() {
return true;
}
+bool PasswordManager::ShouldBlockPasswordForSameOriginButDifferentScheme(
+ const PasswordForm& form) const {
+ const GURL& old_origin = main_frame_url_.GetOrigin();
+ const GURL& new_origin = form.origin.GetOrigin();
+ return old_origin.host_piece() == new_origin.host_piece() &&
+ old_origin.SchemeIsCryptographic() &&
+ !new_origin.SchemeIsCryptographic();
+}
+
bool PasswordManager::ShouldPromptUserToSavePassword() const {
return !client_->IsAutomaticPasswordSavingEnabled() &&
(provisional_save_manager_->IsNewLogin() ||

Powered by Google App Engine
This is Rietveld 408576698