зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1377426 - Set CSP on freshly created nullprincipal when iframe is sandboxed. r=dveditz
This commit is contained in:
Родитель
88d86847fe
Коммит
250d4b1ff8
|
@ -2792,10 +2792,14 @@ nsDocument::InitCSP(nsIChannel* aChannel)
|
|||
|
||||
mSandboxFlags |= cspSandboxFlags;
|
||||
|
||||
if (cspSandboxFlags & SANDBOXED_ORIGIN) {
|
||||
// If the new CSP sandbox flags do not have the allow-same-origin flag
|
||||
// reset the document principal to a null principal
|
||||
principal = NullPrincipal::Create();
|
||||
// Probably the iframe sandbox attribute already caused the creation of a
|
||||
// new NullPrincipal. Only create a new NullPrincipal if CSP requires so
|
||||
// and no one has been created yet.
|
||||
bool needNewNullPrincipal =
|
||||
(cspSandboxFlags & SANDBOXED_ORIGIN) && !(mSandboxFlags & SANDBOXED_ORIGIN);
|
||||
if (needNewNullPrincipal) {
|
||||
principal = NullPrincipal::CreateWithInheritedAttributes(principal);
|
||||
principal->SetCsp(csp);
|
||||
SetPrincipal(principal);
|
||||
}
|
||||
|
||||
|
|
|
@ -106,6 +106,15 @@ var testCases = [
|
|||
results: { img12_bad: -1, script12_bad: -1 },
|
||||
nrOKmessages: 4 // sends 4 ok message
|
||||
},
|
||||
{
|
||||
// Test 13: same as Test 5 and Test 11, but:
|
||||
// * using sandbox flag 'allow-scripts' in CSP and not as iframe attribute
|
||||
// * not using allow-same-origin in CSP (so a new NullPrincipal is created).
|
||||
csp: "default-src 'none'; script-src 'unsafe-inline'; sandbox allow-scripts",
|
||||
file: "file_sandbox_5.html",
|
||||
results: { img13_bad: -1, img13a_bad: -1, script13_bad: -1, script13a_bad: -1 },
|
||||
nrOKmessages: 2 // sends 2 ok message
|
||||
},
|
||||
];
|
||||
|
||||
// a postMessage handler that is used by sandboxed iframes without
|
||||
|
|
Загрузка…
Ссылка в новой задаче