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

Unified Diff: tools/origin_trials/generate_token.py

Issue 2456053004: Validate origins when generating subdomain tokens (Closed)
Patch Set: Rebase Created 4 years, 2 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: tools/origin_trials/generate_token.py
diff --git a/tools/origin_trials/generate_token.py b/tools/origin_trials/generate_token.py
index a79f169234b01b78da36485504799b2302ae6c1a..f1c07a9d60bde1ee304d72f264297d375b8d0e26 100755
--- a/tools/origin_trials/generate_token.py
+++ b/tools/origin_trials/generate_token.py
@@ -86,6 +86,24 @@ def ExpiryFromArgs(args):
return int(args.expire_timestamp)
return (int(time.time()) + (int(args.expire_days) * 86400))
+def ValidateSubdomainTokenOrigin(origin):
+ """ Calls validate_subdomain_origin utility to check the origin
+
+ If the utility is not found, prints a warning for manual validation, and
+ returns True
+ """
+ utility_path = "bin/validate_subdomain_origin"
iclelland 2016/11/02 15:25:47 How does this utility end up in a bin/ directory?
chasej 2016/11/03 19:23:39 I forgot to add instructions, but I just used a sy
+ if not os.path.exists(utility_path):
+ print "WARNING!"
+ print "Origin not validated for use in subdomain token"
+ print " (missing '%s' utility)" % utility_path
+ print "Must manually check origin against the Public Suffix List"
+ print
+ return True
+
+ rc = os.system("%s %s >/dev/null 2>&1" % (utility_path, origin))
+ return rc == 0
iclelland 2016/11/02 15:25:47 It is also possible for other non-zero status to b
chasej 2016/11/03 19:23:39 Done.
+
def GenerateTokenData(origin, is_subdomain, feature_name, expiry):
data = {"origin": origin,
"feature": feature_name,
@@ -159,6 +177,12 @@ def main():
print("Unable to use the specified private key file.")
sys.exit(1)
+ # For subdomain tokens, validate that the origin is allowed
+ if args.is_subdomain:
+ if not ValidateSubdomainTokenOrigin(args.origin):
+ print "The specified origin is not valid for use in a subdomain token."
+ sys.exit(1)
+
token_data = GenerateTokenData(args.origin, args.is_subdomain,
args.trial_name, expiry)
data_to_sign = GenerateDataToSign(VERSION, token_data)

Powered by Google App Engine
This is Rietveld 408576698