Почему моя политика безопасности контента работает везде, кроме Safari

Я определил свою политику безопасности как:

default-src 'self'; script-src 'self'; frame-src 'self';  style-src 'self' 'unsafe-inline'; 

(У меня все еще есть CSS во главе нескольких страниц).

У меня нет проблем с Firefox или Chrome (IE пока не поддерживает CSP), но когда я пытаюсь протестировать в Safari, я получаю ряд ошибок, например:

Refused to load style from 'http://localhost/styles/alliance.css' because of Content-Security-Policy.
.
.
.
Refused to load image from 'http://localhost/images/Landing1.jpg' because of Content-Security-Policy.
.
.
.
Refused to load script from 'http://localhost/JQuery/jquery-1.7.2.min.js' because of Content-Security-Policy.

Изображения должны быть покрыты default-src, а два других указаны как «Я», поэтому я не знаю, почему Safari не принимает мои изображения и сценарии. У меня нет Mac, поэтому я использую Safari в Windows (5.1.7).

Есть идеи? Спасибо!


person Mark Brittingham    schedule 01.12.2012    source источник


Ответы (1)


Safari 5 немного отстает в реализации CSP. Safari 6 намного лучше, но я не думаю, что он был выпущен для Windows. Я думаю, вы просто видите ошибки реализации. Если ночные версии WebKit доступны для Windows, это может быть хорошей альтернативой для тестирования.

Честно говоря, я бы не рекомендовал использовать заголовок X-WebKit-CSP для Safari 5. Да, Safari 6, но 5 слишком сломан, чтобы его можно было использовать.

Обратите также внимание, что вы можете упростить свою политику. И script-src, и frame-src вернутся к default-src. default-src 'self'; style-src 'self' 'unsafe-inline' должно иметь тот же эффект.

person Mike West    schedule 02.12.2012
comment
Спасибо, Майк. Я видел ссылки на то, как Safari 6 реализовал CSP, и отсутствие комментариев о том же эффекте для Safari 5 заставило меня задуматься. Учитывая нехватку пользователей Safari для Windows, я склонен игнорировать это, но все же полезно знать, что проблема в них, а не во мне. - person Mark Brittingham; 02.12.2012
comment
Спасибо и за другие ваши наблюдения. Дополнительные части были рудиментарными; Первоначально я не предоставил default-src, и Chrome работал нормально. Однако Firefox требовал этого. - person Mark Brittingham; 02.12.2012
comment
Firefox предстоит немного поработать, прежде чем они будут полностью совместимы со спецификацией 1.0, но они быстро продвигаются вперед. Я ожидаю, что скоро они будут поддерживать заголовок без префикса Content-Security-Policy, что немного облегчит вам задачу. (Chrome должен поддерживать заголовок без префикса в 25). - person Mike West; 03.12.2012
comment
@MikeWest: Есть ли способ поддержать IE11. Я пробовал с res.setHeader(X-Content-Security-Policy, sandbox 'allow-same-origin'); и многое другое для IE11. Но ничего не работает. Что-нибудь, чтобы обойти для IE11? - person akashPatra; 22.08.2014