Вопрос или проблема
Включает ли звездочка / подстановочный символ (*) CORS как зашифрованные (https), так и нешифрованные источники (http)? И считается ли нулевой источник (например, когда локальный файл выполняет xmlhttprequest, или внутри iframe с атрибутом sandbox) http?
Подстановочный символ охватывает все источники, как определено в стандарте Fetch. Это включает источники с схемой http
и https
.
Нулевой origin
не считается http
источником. Это совершенно отдельный непрозрачный источник. Обратите внимание, что локальные файлы обычно открываются с помощью file
URL, поэтому они не обязательно имеют непрозрачный источник.
Ответ или решение
CORS (Cross-Origin Resource Sharing) – это механизм, который позволяет ограничивать доступ к ресурсам на веб-странице с одного источника (origin) со стороны скриптов, загружаемых с другого источника. Его использование стало особенно актуальным в свете растущих требований к безопасности в сети.
Популярное мнение о CORS и подстановочном знаке
Подстановочный знак (wildcard) в CORS представлен символом "*". Он позволяет указывать, что доступ разрешен для всех источников. В соответствии со стандартами, определяющими работу CORS, такой подход действительно учитывает как шифрованные (https), так и незащищенные (http) источники. Это очень важно, поскольку в современном веб-приложении могут взаимодействовать ресурсы из разных схем, и использование подстановочного знака обеспечивает гибкость при установлении безопасных соединений.
Уточнение по поводу "null" источника
С определением "null" источника дело обстоит иначе. По результатам анализа спецификаций, "null" источник не считается "http" источником. На практике это обычно происходит в следующих случаях:
- Когда вы обращаетесь к местным файлам через локальные URL, такие как
file://
. - Если страница загружается в iframe с атрибутом
sandbox
, что также может привести к появлению "null" источника.
"Null" источник классифицируется как полное отдельное понятие – непрозрачный источник (opaque origin), который не имеет схемы. Это важный момент в контексте безопасности, поскольку у ресурсов с "null" источником есть свои уникальные ограничения и условия, отличающие их от стандартных "http" или "https" соединений.
Заключение
В итоге, подстановочный знак *
в CORS действительно охватывает как http, так и https источники, но с "null" источником следует быть осторожными. Понимание этих нюансов позволяет лучше планировать архитектуру веб-приложений, обеспечивая как их функциональность, так и безопасность. Это знание актуально как для разработчиков, так и для системных администраторов, которых интересуют последние новые технологии в области безопасности веб-приложений.