OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google, Inc. All rights reserved. | 2 * Copyright (C) 2011 Google, Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 } | 62 } |
63 ~ContentSecurityPolicy(); | 63 ~ContentSecurityPolicy(); |
64 | 64 |
65 void copyStateFrom(const ContentSecurityPolicy*); | 65 void copyStateFrom(const ContentSecurityPolicy*); |
66 | 66 |
67 enum HeaderType { | 67 enum HeaderType { |
68 Report, | 68 Report, |
69 Enforce, | 69 Enforce, |
70 }; | 70 }; |
71 | 71 |
| 72 enum HeaderSource { |
| 73 HeaderSourceHTTP, |
| 74 HeaderSourceMeta |
| 75 }; |
| 76 |
72 enum ReportingStatus { | 77 enum ReportingStatus { |
73 SendReport, | 78 SendReport, |
74 SuppressReport | 79 SuppressReport |
75 }; | 80 }; |
76 | 81 |
77 enum HashAlgorithms { | 82 enum HashAlgorithms { |
78 HashAlgorithmsNone = 0, | 83 HashAlgorithmsNone = 0, |
79 HashAlgorithmsSha1 = 1 << 1, | 84 HashAlgorithmsSha1 = 1 << 1, |
80 HashAlgorithmsSha256 = 1 << 2 | 85 HashAlgorithmsSha256 = 1 << 2 |
81 }; | 86 }; |
82 | 87 |
83 void didReceiveHeaders(const ContentSecurityPolicyResponseHeaders&); | 88 void didReceiveHeaders(const ContentSecurityPolicyResponseHeaders&); |
84 void didReceiveHeader(const String&, HeaderType); | 89 void didReceiveHeader(const String&, HeaderType, HeaderSource); |
85 | 90 |
86 // These functions are wrong because they assume that there is only one head
er. | 91 // These functions are wrong because they assume that there is only one head
er. |
87 // FIXME: Replace them with functions that return vectors. | 92 // FIXME: Replace them with functions that return vectors. |
88 const String& deprecatedHeader() const; | 93 const String& deprecatedHeader() const; |
89 HeaderType deprecatedHeaderType() const; | 94 HeaderType deprecatedHeaderType() const; |
90 | 95 |
91 bool allowJavaScriptURLs(const String& contextURL, const WTF::OrdinalNumber&
contextLine, ReportingStatus = SendReport) const; | 96 bool allowJavaScriptURLs(const String& contextURL, const WTF::OrdinalNumber&
contextLine, ReportingStatus = SendReport) const; |
92 bool allowInlineEventHandlers(const String& contextURL, const WTF::OrdinalNu
mber& contextLine, ReportingStatus = SendReport) const; | 97 bool allowInlineEventHandlers(const String& contextURL, const WTF::OrdinalNu
mber& contextLine, ReportingStatus = SendReport) const; |
93 bool allowInlineScript(const String& contextURL, const WTF::OrdinalNumber& c
ontextLine, ReportingStatus = SendReport) const; | 98 bool allowInlineScript(const String& contextURL, const WTF::OrdinalNumber& c
ontextLine, ReportingStatus = SendReport) const; |
94 bool allowInlineStyle(const String& contextURL, const WTF::OrdinalNumber& co
ntextLine, ReportingStatus = SendReport) const; | 99 bool allowInlineStyle(const String& contextURL, const WTF::OrdinalNumber& co
ntextLine, ReportingStatus = SendReport) const; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 void reportInvalidDirectiveValueCharacter(const String& directiveName, const
String& value) const; | 134 void reportInvalidDirectiveValueCharacter(const String& directiveName, const
String& value) const; |
130 void reportInvalidPathCharacter(const String& directiveName, const String& v
alue, const char) const; | 135 void reportInvalidPathCharacter(const String& directiveName, const String& v
alue, const char) const; |
131 void reportInvalidPluginTypes(const String&) const; | 136 void reportInvalidPluginTypes(const String&) const; |
132 void reportInvalidSandboxFlags(const String&) const; | 137 void reportInvalidSandboxFlags(const String&) const; |
133 void reportInvalidSourceExpression(const String& directiveName, const String
& source) const; | 138 void reportInvalidSourceExpression(const String& directiveName, const String
& source) const; |
134 void reportInvalidReflectedXSS(const String&) const; | 139 void reportInvalidReflectedXSS(const String&) const; |
135 void reportMissingReportURI(const String&) const; | 140 void reportMissingReportURI(const String&) const; |
136 void reportUnsupportedDirective(const String&) const; | 141 void reportUnsupportedDirective(const String&) const; |
137 void reportInvalidInReportOnly(const String&) const; | 142 void reportInvalidInReportOnly(const String&) const; |
138 void reportInvalidReferrer(const String&) const; | 143 void reportInvalidReferrer(const String&) const; |
| 144 void reportReportOnlyInMeta(const String&) const; |
139 void reportViolation(const String& directiveText, const String& effectiveDir
ective, const String& consoleMessage, const KURL& blockedURL, const Vector<KURL>
& reportURIs, const String& header); | 145 void reportViolation(const String& directiveText, const String& effectiveDir
ective, const String& consoleMessage, const KURL& blockedURL, const Vector<KURL>
& reportURIs, const String& header); |
140 | 146 |
141 void reportBlockedScriptExecutionToInspector(const String& directiveText) co
nst; | 147 void reportBlockedScriptExecutionToInspector(const String& directiveText) co
nst; |
142 | 148 |
143 const KURL url() const; | 149 const KURL url() const; |
144 KURL completeURL(const String&) const; | 150 KURL completeURL(const String&) const; |
145 SecurityOrigin* securityOrigin() const; | 151 SecurityOrigin* securityOrigin() const; |
146 void enforceSandboxFlags(SandboxFlags) const; | 152 void enforceSandboxFlags(SandboxFlags) const; |
147 String evalDisabledErrorMessage() const; | 153 String evalDisabledErrorMessage() const; |
148 | 154 |
149 bool experimentalFeaturesEnabled() const; | 155 bool experimentalFeaturesEnabled() const; |
150 | 156 |
151 static bool shouldBypassMainWorld(ExecutionContext*); | 157 static bool shouldBypassMainWorld(ExecutionContext*); |
152 | 158 |
153 ExecutionContextClient* client() { return m_client; } | 159 ExecutionContextClient* client() { return m_client; } |
154 | 160 |
155 private: | 161 private: |
156 explicit ContentSecurityPolicy(ExecutionContextClient*); | 162 explicit ContentSecurityPolicy(ExecutionContextClient*); |
157 | 163 |
158 void logToConsole(const String& message) const; | 164 void logToConsole(const String& message) const; |
159 void addPolicyFromHeaderValue(const String&, HeaderType); | 165 void addPolicyFromHeaderValue(const String&, HeaderType, HeaderSource); |
160 | 166 |
161 bool shouldSendViolationReport(const String&) const; | 167 bool shouldSendViolationReport(const String&) const; |
162 void didSendViolationReport(const String&); | 168 void didSendViolationReport(const String&); |
163 | 169 |
164 ExecutionContextClient* m_client; | 170 ExecutionContextClient* m_client; |
165 bool m_overrideInlineStyleAllowed; | 171 bool m_overrideInlineStyleAllowed; |
166 CSPDirectiveListVector m_policies; | 172 CSPDirectiveListVector m_policies; |
167 | 173 |
168 HashSet<unsigned, AlreadyHashed> m_violationReportsSent; | 174 HashSet<unsigned, AlreadyHashed> m_violationReportsSent; |
169 | 175 |
170 // We put the hash functions used on the policy object so that we only need | 176 // We put the hash functions used on the policy object so that we only need |
171 // to calculate a hash once and then distribute it to all of the directives | 177 // to calculate a hash once and then distribute it to all of the directives |
172 // for validation. | 178 // for validation. |
173 uint8_t m_scriptHashAlgorithmsUsed; | 179 uint8_t m_scriptHashAlgorithmsUsed; |
174 uint8_t m_styleHashAlgorithmsUsed; | 180 uint8_t m_styleHashAlgorithmsUsed; |
175 }; | 181 }; |
176 | 182 |
177 } | 183 } |
178 | 184 |
179 #endif | 185 #endif |
OLD | NEW |