Commit dead92c7 authored by Aidan Beggs's avatar Aidan Beggs Committed by Commit Bot

Added initial outline for the sensitive keywords heuristic triggering a safety tip.

This CL adds an outline for the sensitive keywords safety tip logic that
will be implemented later. For now, the heuristic always returns false
(no sites are currently triggered by the heuristic, and safety tip
behavior should be unchanged).

Bug: 984725
Change-Id: I162830c08158358a4697d46441b1d5835e5752b6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1842500Reviewed-by: default avatarJoe DeBlasio <jdeblasio@chromium.org>
Reviewed-by: default avatarMustafa Emre Acer <meacer@chromium.org>
Reviewed-by: default avatarChristopher Thompson <cthomp@chromium.org>
Commit-Queue: Aidan Beggs <beggs@google.com>
Cr-Commit-Position: refs/heads/master@{#703914}
parent 9a94d6d9
...@@ -70,6 +70,15 @@ bool ShouldTriggerSafetyTipFromLookalike( ...@@ -70,6 +70,15 @@ bool ShouldTriggerSafetyTipFromLookalike(
return true; return true;
} }
// TODO(crbug/984725): Implement Keyword Check
bool ShouldTriggerSafetyTipFromKeywordInURL(
const GURL& url,
const DomainInfo& navigated_domain,
const std::vector<DomainInfo>& engaged_sites) {
// TODO(crbug/987754): Record metrics here.
return false;
}
// This factory helps construct and find the singleton ReputationService linked // This factory helps construct and find the singleton ReputationService linked
// to a Profile. // to a Profile.
class ReputationServiceFactory : public BrowserContextKeyedServiceFactory { class ReputationServiceFactory : public BrowserContextKeyedServiceFactory {
...@@ -251,7 +260,15 @@ void ReputationService::GetReputationStatusWithEngagedSites( ...@@ -251,7 +260,15 @@ void ReputationService::GetReputationStatusWithEngagedSites(
return; return;
} }
// TODO(crbug/984725): 5. Additional client-side heuristics // 5. Keyword heuristics.
if (ShouldTriggerSafetyTipFromKeywordInURL(url, navigated_domain,
engaged_sites)) {
std::move(callback).Run(security_state::SafetyTipStatus::kBadKeyword,
IsIgnored(url), url, GURL());
return;
}
// TODO(crbug/984725): 6. Additional client-side heuristics.
std::move(callback).Run(security_state::SafetyTipStatus::kNone, std::move(callback).Run(security_state::SafetyTipStatus::kNone,
IsIgnored(url), url, GURL()); IsIgnored(url), url, GURL());
} }
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "chrome/browser/lookalikes/safety_tips/reputation_web_contents_observer.h" #include "chrome/browser/lookalikes/safety_tips/reputation_web_contents_observer.h"
#include <string> #include <string>
#include <utility>
#include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_functions.h"
#include "base/metrics/histogram_macros.h" #include "base/metrics/histogram_macros.h"
...@@ -137,13 +138,12 @@ void ReputationWebContentsObserver::HandleReputationCheckResult( ...@@ -137,13 +138,12 @@ void ReputationWebContentsObserver::HandleReputationCheckResult(
UMA_HISTOGRAM_ENUMERATION("Security.SafetyTips.SafetyTipShown", UMA_HISTOGRAM_ENUMERATION("Security.SafetyTips.SafetyTipShown",
safety_tip_status); safety_tip_status);
if (safety_tip_status == security_state::SafetyTipStatus::kNone) { if (safety_tip_status == security_state::SafetyTipStatus::kNone ||
safety_tip_status == security_state::SafetyTipStatus::kBadKeyword) {
MaybeCallReputationCheckCallback(); MaybeCallReputationCheckCallback();
return; return;
} }
// TODO(crbug/987754): Record metrics here.
if (user_ignored) { if (user_ignored) {
UMA_HISTOGRAM_ENUMERATION("Security.SafetyTips.SafetyTipIgnoredPageLoad", UMA_HISTOGRAM_ENUMERATION("Security.SafetyTips.SafetyTipIgnoredPageLoad",
safety_tip_status); safety_tip_status);
......
...@@ -66,6 +66,7 @@ base::string16 GetSafetyTipTitle( ...@@ -66,6 +66,7 @@ base::string16 GetSafetyTipTitle(
security_interstitials::common_string_util::GetFormattedHostName( security_interstitials::common_string_util::GetFormattedHostName(
url)); url));
#endif #endif
case security_state::SafetyTipStatus::kBadKeyword:
case security_state::SafetyTipStatus::kUnknown: case security_state::SafetyTipStatus::kUnknown:
case security_state::SafetyTipStatus::kNone: case security_state::SafetyTipStatus::kNone:
NOTREACHED(); NOTREACHED();
...@@ -87,6 +88,7 @@ base::string16 GetSafetyTipDescription( ...@@ -87,6 +88,7 @@ base::string16 GetSafetyTipDescription(
IDS_PAGE_INFO_SAFETY_TIP_LOOKALIKE_DESCRIPTION, IDS_PAGE_INFO_SAFETY_TIP_LOOKALIKE_DESCRIPTION,
security_interstitials::common_string_util::GetFormattedHostName( security_interstitials::common_string_util::GetFormattedHostName(
url)); url));
case security_state::SafetyTipStatus::kBadKeyword:
case security_state::SafetyTipStatus::kNone: case security_state::SafetyTipStatus::kNone:
case security_state::SafetyTipStatus::kUnknown: case security_state::SafetyTipStatus::kUnknown:
NOTREACHED(); NOTREACHED();
...@@ -106,6 +108,7 @@ int GetSafetyTipLeaveButtonId(security_state::SafetyTipStatus warning_type) { ...@@ -106,6 +108,7 @@ int GetSafetyTipLeaveButtonId(security_state::SafetyTipStatus warning_type) {
case security_state::SafetyTipStatus::kLookalike: case security_state::SafetyTipStatus::kLookalike:
return IDS_PAGE_INFO_SAFETY_TIP_LEAVE_BUTTON; return IDS_PAGE_INFO_SAFETY_TIP_LEAVE_BUTTON;
#endif #endif
case security_state::SafetyTipStatus::kBadKeyword:
case security_state::SafetyTipStatus::kUnknown: case security_state::SafetyTipStatus::kUnknown:
case security_state::SafetyTipStatus::kNone: case security_state::SafetyTipStatus::kNone:
NOTREACHED(); NOTREACHED();
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/common/pref_names.h" #include "chrome/common/pref_names.h"
#include "components/prefs/pref_service.h" #include "components/prefs/pref_service.h"
#include "components/vector_icons/vector_icons.h"
#include "media/base/media_switches.h" #include "media/base/media_switches.h"
#include "ui/gfx/color_palette.h" #include "ui/gfx/color_palette.h"
#include "ui/gfx/color_utils.h" #include "ui/gfx/color_utils.h"
...@@ -288,6 +287,9 @@ PageInfoUI::GetSecurityDescription(const IdentityInfo& identity_info) const { ...@@ -288,6 +287,9 @@ PageInfoUI::GetSecurityDescription(const IdentityInfo& identity_info) const {
case security_state::SafetyTipStatus::kLookalike: case security_state::SafetyTipStatus::kLookalike:
// Lookalikes have their own strings, but they're suggestions, not // Lookalikes have their own strings, but they're suggestions, not
// warnings, so we leave Page Info alone. // warnings, so we leave Page Info alone.
case security_state::SafetyTipStatus::kBadKeyword:
// Keyword safety tips are only used to collect metrics for now and are
// not visible to the user, so don't affect Page Info.
case security_state::SafetyTipStatus::kNone: case security_state::SafetyTipStatus::kNone:
case security_state::SafetyTipStatus::kUnknown: case security_state::SafetyTipStatus::kUnknown:
break; break;
......
...@@ -82,7 +82,10 @@ std::string GetHistogramSuffixForSafetyTipStatus( ...@@ -82,7 +82,10 @@ std::string GetHistogramSuffixForSafetyTipStatus(
return "SafetyTip_BadReputation"; return "SafetyTip_BadReputation";
case security_state::SafetyTipStatus::kLookalike: case security_state::SafetyTipStatus::kLookalike:
return "SafetyTip_Lookalike"; return "SafetyTip_Lookalike";
}; case security_state::SafetyTipStatus::kBadKeyword:
NOTREACHED();
return std::string();
}
NOTREACHED(); NOTREACHED();
return std::string(); return std::string();
} }
......
...@@ -120,9 +120,12 @@ enum class SafetyTipStatus { ...@@ -120,9 +120,12 @@ enum class SafetyTipStatus {
kNone = 1, kNone = 1,
// The current page triggered a Safety Tip because it was bad reputation. // The current page triggered a Safety Tip because it was bad reputation.
kBadReputation = 2, kBadReputation = 2,
// The current page trigged a Safety Tip because it had a lookalike URL. // The current page triggered a Safety Tip because it had a lookalike URL.
kLookalike = 3, kLookalike = 3,
kMaxValue = kLookalike, // The current page triggered a Safety Tip because a suspicious keyword was
// found in its hostname.
kBadKeyword = 4,
kMaxValue = kBadKeyword,
}; };
// Contains the security state relevant to computing the SecurityLevel // Contains the security state relevant to computing the SecurityLevel
......
...@@ -53115,6 +53115,7 @@ Called by update_net_trust_anchors.py.--> ...@@ -53115,6 +53115,7 @@ Called by update_net_trust_anchors.py.-->
<int value="1" label="No Safety Tip"/> <int value="1" label="No Safety Tip"/>
<int value="2" label="Safety Tip for bad reputation"/> <int value="2" label="Safety Tip for bad reputation"/>
<int value="3" label="Safety Tip for lookalike URL"/> <int value="3" label="Safety Tip for lookalike URL"/>
<int value="4" label="Safety Tip for a URL with a suspicious keyword"/>
</enum> </enum>
<enum name="SameSiteCookieContext"> <enum name="SameSiteCookieContext">
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment