какие есть csp

КАКИЕ ЕСТЬ CSP ЭЦП

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/euclid

.png» alt=»euclid

.png»>
SCP-1620-RU
— «Призрачная ведьма»

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/safe

.png» alt=»safe

.png»>
SCP-1551-RU
— Посредник

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/safe

.png» alt=»safe

.png»>
SCP-1598-RU
— Книга о тебе

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/euclid

.png» alt=»euclid

.png»>
SCP-1852-RU
— Живой труп

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/safe

.png» alt=»safe

.png»>
SCP-1883-RU
— Советская закалка

Большинство объектов в базе данных Организации относятся к этим семи классам.

Страница, соотносящая объекты и рассказы по ним: Объекты I — Включая рассказы

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/na

.png» alt=»na

.png»>
— Не назначен или нейтрализован

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/safe

.png» alt=»safe

.png»>
Безопасный


<img src="https://files.scpfoundation.net/local—files/scp-list-ru/euclid

.png» alt=»euclid

.png»>
Евклид


<img src="https://files.scpfoundation.net/local—files/scp-list-ru/keter

.png» alt=»keter

.png»>
Кетер


<img src="https://files.scpfoundation.net/local—files/scp-list-ru/thaumiel

.png» alt=»thaumiel

.png»>
Таумиэль


nonstandard.png
Нестандартный класс

na.png
— Не назначен или нейтрализован

safe.png
Безопасный


euclid.png
Евклид


keter.png
Кетер


thaumiel.png
Таумиэль


nonstandard.png
Нестандартный класс

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/safe

.png» alt=»safe

.png»>
SCP-1?1!-RU
— Как называется объект? Карты вопросов и ответов.

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/euclid

.png» alt=»euclid

.png»>
SCP-1771-RU
— По обмену

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/na

.png» alt=»na

.png»>
SCP-1777-RU
— Код

Нейтрализованные аномалии утратили свою аномальность из-за намеренного или случайного разрушения, отключения либо по какой-то иной причине.

Ниже представлены подклассы объектов, которые дополняют основную (или бывшую) классификацию объектов.

Документация по нейтрализованным аномалиям сдаётся в архив на случай, если аномальные свойства проявятся вновь, либо будет обнаружена подобная аномалия.

Объекты класса «Аполлион» являются аномалиями, которые или невозможно содержать, или они неминуемо нарушат условия содержания, или предполагается развитие событий по схожему сценарию. Такие аномалии обычно связаны с угрозами конца света или Событиями класса К и требуют от Фонда значительных усилий для их устранения.

Обоснованные объекты — это объекты, природа которых целиком и полностью установлена, объяснима с помощью классической науки, а также фальсифицированные объекты, обычные объекты, которым по ошибке были приписаны аномальные свойства, либо такие, которые распространились настолько широко, что сдерживание не представляется возможным.

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/safe

.png» alt=»safe

.png»>
SCP-1933-RU
— Парадокс Элдермана

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/keter

.png» alt=»keter

.png»>
SCP-1955-RU
— Кредитор

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/safe

.png» alt=»safe

.png»>
SCP-1960-RU
— Безумный чайный набор

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/safe

.png» alt=»safe

.png»>
SCP-1961-RU
— Социальный катализатор

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/safe

.png» alt=»safe

.png»>
SCP-1962-RU
— Пояс повстанца

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/euclid

.png» alt=»euclid

.png»>
SCP-1963-RU
— Проекция

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/euclid

.png» alt=»euclid

.png»>
SCP-1966-RU
— Атаман Рябой

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/safe

.png» alt=»safe

.png»>
SCP-1973-RU
— Квантовое бессмертие

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/safe

.png» alt=»safe

.png»>
SCP-1981-RU
— Проданный смех

nonstandard.png
SCP-1983-RU
— Я помню 04 ноября 1983 года

<img src="https://files.scpfoundation.net/local—files/scp-list-ru/euclid

.png» alt=»euclid

.png»>
SCP-1995-RU
— Блуждающая пуля


Списанные объекты
— не относящийся к канону Фонда класс объектов, к которому относятся удалённые объекты, помещённые администрацией на своего рода «Доску позора», чтобы служить для других отрицательным примером.

В наши дни списание, как правило, не практикуется, поскольку админсостав больше не делает столь деспотичных правок, а отчасти потому, что списания в итоге сказались на сайте отрицательно.

Объекты класса «Безопасный» — это аномалии, которые либо достаточно хорошо изучены для полноценного и надёжного долговременного содержания, либо не проявляют аномального воздействия без определённого внешнего стимула.

Назначение аномалии класса «Безопасный» не значит, что активация или работа с ней не несёт угрозы; всем сотрудникам следует помнить, что все особые условия содержания и протоколы безопасности следует соблюдать неукоснительно.

Это список всех SCP объектов, присутствующих в SCP: Containment Breach.

Содержание
  1. Подробнее
  2. Как работает CSP
  3. Основные директивы
  4. Правила
  5. Нестандартные (Эзотерические, Нарративные) классы
  6. Nginx Шаг 2
  7. Nginx Шаг 4
  8. Nginx Шаг 3
  9. Что дальше?
  10. Окей, мы разобрались с тем что такое CSP, но с чего начать, а самое главное как мы будем тестировать, работает этот механизм или нет?
  11. Я попробую пошагово рассказать свой опыт настройки этого механизма, и что я для этого использовал.
  12. Мое приложение использует стек:
  13. Так же есть прямой доступ к конфигу webpack с конфигурацией сборки.
  14. Для чего нужен CSP
  15. Часто задаваемые вопросы
  16. Nginx Шаг 1
  17. Nginx Шаг 6
  18. Nginx Шаг 5
  19. От каких атак защищает CSP
  20. XSS (Cross-Site Scripting) — «межсайтовый скриптинг»
  21. Перехват пакетов
  22. Типы потенциально опасного содержимого
  23. Скрипты
  24. Изображения
  25. Стили
  26. Медиа
  27. Шрифты
  28. Объекты
  29. Фреймы
  30. Манифесты
  31. Nginx Шаг 7
  32. Уязвимости CSP
  33. JavaScript внутри фрейма
  34. Отсутствие CSP в ошибках сервера
  35. Подгрузка скриптов с файлообменников
  36. Настройка frontend приложения
  37. Памятка по классификации
  38. Список российских объектов, перенесённых на англовики


Следующие объекты упомянутые в игре, но нет никаких указаний на то, что эти объекты могут быть введены в игру в видимой или немой форме.


  1. 1,0

    1,1


    -J указывает, что в оригинале данный объект — шуточный. В игре 2 таких объекта.


Подробнее

Материалы сообщества доступны в соответствии с условиями лицензии CC-BY-SA
, если не указано иное.

Объекты класса «Таумиэль» имеют высокую степень секретности, встречаются крайне редко и применяются Фондом для содержания или противодействия другим аномалиям, представляющим большую опасность, в особенности — объектам класса «Кетер». Сама информация о существовании объектов класса «Таумиэль» является секретной и доступна только высокопоставленным сотрудникам Фонда, а информация о местонахождении, функциях и актуальном состоянии таких объектов не известна практически никому, кроме Совета О5.

Объекты класса «Архонт» являются аномалиями, чье содержание теоретически возможно, но по каким-либо  причинам их лучше не содержать. Объекты класса «Архонт» могут быть частью общепризнанной реальности, которую затруднительно полноценно поставить на содержание, или же их содержание может быть чревато отрицательными последствиями. Эти аномалии не относятся к тем, чье содержание невозможно — основная особенность класса состоит в том, что Фонд решил не ставить аномалию на содержание, хотя мог бы.


Список аномальных предметов
( часть 2
) — список предметов, которые нельзя назвать полноценными SCP-объектами несмотря на наличие аномальных свойств.

Список аномальных явлений
— список необычных явлений, зачастую произошедших единожды и слишком быстро, чтобы Организация могла оперативно среагировать.

Список необъяснённых локаций
— список обнаруженных Фондом необычных зон, которые всё же не требуют установки специфических ОУС.

версия страницы: 1742, Последняя правка: 20 Авг. 2023, 17:20 (41 день назад)

CSP (Content Security Policy) — стандарт защиты сайтов от атак с внедрением контента, например XSS — межсайтового скриптинга. C SP описывает безопасные источники загрузки и блокирует ресурсы, которые не входят в «белый список».

CSP разработал Роберт Хансен в 2004 году. Сначала протокол появился в Firefox 4, а потом и в других популярных браузерах. А в 2012 году он вошел в список рекомендаций World Wide Web Consortium (W3C, Консорциума Всемирной паутины) — группы организаций, которая занимается разработкой стандартов для Всемирной паутины.

Объекты класса «Кетер» — аномалии, которые настроены враждебно, представляют опасность для сотрудников Фонда и всего остального человечества, а их содержание сопряжено с большими затратами и сложными процедурами сдерживания, либо такие, полноценное содержание которых с помощью имеющихся у Фонда знаний и средств невозможно.

Как правило, такие аномалии считаются самыми опасными из всех, находящихся на содержании, а научная деятельность по таким объектам направлена исключительно на разработку более надёжных средств сдерживания, либо, в качестве крайней меры, на своевременную нейтрализацию или уничтожение их аномального эффекта.

К объектам класса «Евклид» относятся недостаточно изученные или изначально непредсказуемые аномалии, надёжное содержание которых не всегда возможно, но уровень угрозы недостаточен для присвоения им класса «Кетер». Подавляющему большинству аномалий, содержащихся Фондом, изначально присваивается класс «Евклид», который затем может быть изменён, если объект достаточно хорошо изучен или уровень представляемой им опасности слишком велик.

В частности, всем аномалиям, которые можно назвать автономными
и/или разумными
, чаще всего присваивается класс не ниже «Евклида», поскольку объект, наделённый собственной волей или мышлением, по сути непредсказуем.

Время на прочтение

Content Security Policy (CSP) — это механизм безопасности веб-приложений, который используется для сокращения рисков, связанных с атаками, такими как внедрение скриптов (XSS) и выполнение нежелательного кода (инъекция). C SP позволяет веб-разработчикам указывать браузерам, из каких источников разрешено загружать ресурсы, такие как скрипты, стили, изображения, шрифты и другие элементы.

С помощью CSP можно определить набор допустимых источников для каждого типа ресурса, а браузеры будут блокировать попытки загрузки ресурсов из недопустимых источников. Например, вы можете настроить CSP таким образом, чтобы разрешить загрузку скриптов только из определенного домена или разрешить загрузку стилей только из локального файла.

Это помогает предотвратить атаки, основанные на выполнении вредоносного кода из внешних источников, а также уменьшает риски, связанные с подделкой источников, перехватом данных и другими видами атак. C SP является эффективным инструментом для укрепления безопасности веб-приложений и защиты пользователей от различных видов уязвимостей.

euclid.png
SCP-800
— История Востока

euclid.png
SCP-801
— Семь шкур

euclid.png
SCP-802
— Музыкальный танк

euclid.png
SCP-803
— Хищные зонтики

keter.png
SCP-804
— Мир без людей

euclid.png
SCP-805
— Ядовитая деревянная лошадка

safe.png
SCP-806
— Воскрешающий проектор

euclid.png
SCP-807
— Сердечный приступ на блюдечке

euclid.png
SCP-808
— Механический хор

safe.png
SCP-809
— Военные ботинки

euclid.png
SCP-810
— Лампа нежелания

euclid.png
SCP-811
— Болотница

euclid.png
SCP-812
— Река в контейнере

keter.png
SCP-813
— Осколок стекла

euclid.png
SCP-814
— Чистые тоны

safe.png
SCP-815
— Банка змеиных орехов

euclid.png
SCP-816
— Конструктор Дарвина

euclid.png
SCP-817
— Случайное превращение

na.png
SCP-818
— Прерванный проект

safe.png
SCP-819
— Леденцы-вампиры

euclid.png
SCP-820
— Раскрашенная саранча

na.png
SCP-821
— Южная ярмарка

euclid.png
SCP-822
— Кактус-мина

euclid.png
SCP-823
— Карнавал ужасов

euclid.png
SCP-824
— Активная борьба с сорняками

safe.png
SCP-825
— Шлем тревожных видений

safe.png
SCP-826
— Захватывающее чтение

safe.png
SCP-827
— Суп

euclid.png
SCP-828
— ᖃᓪᓗᐱᓪᓗᐃᑦ

safe.png
SCP-830
— Нефтяные зыбучие пески

euclid.png
SCP-831
— Термиты-ремесленники

safe.png
SCP-832
— Монета счетовода

euclid.png
SCP-833
— Червь милосердия

euclid.png
SCP-834
— Маркеры

keter.png
SCP-835
— Рассекреченные данные

keter.png
SCP-836
— Строительный рак

safe.png
SCP-837
— Глина умножения

safe.png
SCP-838
— Работа во сне

safe.png
SCP-839
— «Засахаренные червячки»

euclid.png
SCP-840
— Трубожители

safe.png
SCP-841
— Горизонтально-Отражённая Зеркальная Вуду-Марионетка

safe.png
SCP-842
— Операционный стол

euclid.png
SCP-843
— Коровьи семена

euclid.png
SCP-844
— Плакса

euclid.png
SCP-845
— Жидкий хорь

safe.png
SCP-846
— Робо-Чувак

euclid.png
SCP-847
— Манекен

euclid.png
SCP-848
— Межпространственная паутина

safe.png
SCP-849
— Идеальный день

euclid.png
SCP-850
— Косяк рыб

euclid.png
SCP-851
— Снотворные насекомые

safe.png
SCP-852
— Лунная аномалия

safe.png
SCP-853
— Консервированная погода

safe.png
SCP-854
— Мост Снов

euclid.png
SCP-855
— Оживший кинотеатр

euclid.png
SCP-856
— Речной лев

safe.png
SCP-857
— Ожившие человеческие органы

keter.png
SCP-858
— Гравитационная радуга

euclid.png
SCP-859
— Шар арахнофобии

safe.png
SCP-860
— Синий ключ

keter.png
SCP-861
— Снизошедший ангел

safe.png
SCP-862
— Крысы

safe.png
SCP-863
— Крабы-конструкторы

euclid.png
SCP-864
— Таз-людоед

safe.png
SCP-865
— Плеть джентльмена

euclid.png
SCP-866
— Суперкомпьютер

euclid.png
SCP-867
— Кровавая ель

euclid.png
SCP-868
— Мнемонический мем

euclid.png
SCP-869
— Лето 1948 года

keter.png
SCP-870
— Здесь могут водиться чудовища

keter.png
SCP-871
— Пироги пекутся сами

safe.png
SCP-872
— Пугало-фермер

euclid.png
SCP-873
— Хрустальный шар из России

euclid.png
SCP-874
— Текучая бездна

safe.png
SCP-875
— Военные преступники

safe.png
SCP-876
— Таблетки, заменяющие элементы

keter.png
SCP-877
— Микрочипы Университета

euclid.png
SCP-878
— Актёр

euclid.png
SCP-879
— Колониальное китообразное

euclid.png
SCP-880
— Вечная зима

euclid.png
SCP-881
— Маленькие люди

euclid.png
SCP-882
— Машина

euclid.png
SCP-883
— Экстрамерный пчелиный улей

euclid.png
SCP-884
— Зеркальце для бритья

euclid.png
SCP-885
— Живой вакуум

safe.png
SCP-886
— Козья матушка

safe.png
SCP-887
— Гиперграфия

safe.png
SCP-888
— Камни памяти

euclid.png
SCP-889
— Скрещивание

euclid.png
SCP-890
— Ракетный хирург

safe.png
SCP-891
— Калифорнийское поле

euclid.png
SCP-892
— Таблица на всех

safe.png
SCP-893
— Размножающийся почкованием

safe.png
SCP-894
— Ничего не вижу, ничего не слышу, ничего никому не скажу

euclid.png
SCP-895
— Искажения на видео

safe.png
SCP-896
— Ролевая онлайн-игра

safe.png
SCP-897
— Вуду-трансплантация

safe.png
SCP-898
— Меметический контрагент

euclid.png
SCP-899
— Пропавшие дети

safe.png
SCP-700
— Фабрика граффити

euclid.png
SCP-701
— «Трагедия о повешенном короле»

euclid.png
SCP-702
— Лавка менялы

euclid.png
SCP-703
— В шкафу

euclid.png
SCP-704
— Опасный вираж

safe.png
SCP-705
— Воинственный пластилин

euclid.png
SCP-706
— Идеальная фарфоровая кукла

safe.png
SCP-707
— Матрёшки

euclid.png
SCP-708
— Вилочный подъемник

safe.png
SCP-709
— Лесное Око

euclid.png
SCP-710
— Исчезновение

safe.png
SCP-711
— Парадоксальная страховка

safe.png
SCP-712
— Невозможные цвета

safe.png
SCP-713
— Компьютер без границ

safe.png
SCP-714
— Нефартовое кольцо

safe.png
SCP-715
— Мое лицо, каким я мог быть

euclid.png
SCP-716
— Поезд

euclid.png
SCP-717
— Посланник

keter.png
SCP-718
— Глаз

safe.png
SCP-719
— Несущий свет

safe.png
SCP-721
— Игрушки Фабрики

keter.png
SCP-722
— Йормунганд

safe.png
SCP-723
— Лестница старения

safe.png
SCP-724
— Енот-полоскун громогласный

euclid.png
SCP-725
— Кит-попугай

euclid.png
SCP-726
— Восстанавливающие личинки

safe.png
SCP-727
— Кузница Гефеста

safe.png
SCP-728
— Комната вечности

safe.png
SCP-729
— Мраморная ванна

euclid.png
SCP-730
— Децеребрирующая чума

euclid.png
SCP-731
— Крысиный люк

keter.png
SCP-732
— Зараза из фанфиков

safe.png
SCP-733
— Ножницы

keter.png
SCP-734
— Младенец

euclid.png
SCP-735
— Оскорбительная коробка

keter.png
SCP-736
— Аномалия Япета

safe.png
SCP-737
— Голодный поезд

keter.png
SCP-738
— Сделка с дьяволом

euclid.png
SCP-739
— Зеркальная кабинка

safe.png
SCP-740
— Фотография «Гинденбурга»

euclid.png
SCP-741
— Загадочная русская подлодка

keter.png
SCP-742
— Ретровирус

keter.png
SCP-743
— Шоколадный фонтан

euclid.png
SCP-744
— Требуется ремонт

euclid.png
SCP-745
— Фары

euclid.png
SCP-746
— Псевдо-птица

euclid.png
SCP-747
— Дети и куклы

euclid.png
SCP-748
— Индустриальный крах

safe.png
SCP-749
— Капли дождя

safe.png
SCP-750
— Другой взгляд на жизнь

euclid.png
SCP-751
— Пожиратель органов

keter.png
SCP-752
— Альтруистическая утопия

safe.png
SCP-753
— Робот-рисовальщик

euclid.png
SCP-754
— Нарисованная лоза

keter.png
SCP-755
— «Опасайся белой птицы»

euclid.png
SCP-756
— Миниатюрная звездная система

euclid.png
SCP-757
— Фруктовое дерево

safe.png
SCP-758
— Корректор по имени Василий

euclid.png
SCP-759
— Закваска

safe.png
SCP-760
&nbsp — Щёточники

safe.png
SCP-761
— Слегка опасный батут

safe.png
SCP-762
— Вечная Железная дева

safe.png
SCP-763
— Органокомплекс «Беовульф»

safe.png
SCP-764
— Непотребное представление

safe.png
SCP-765
— Утиный пруд

safe.png
SCP-766
— Человекоподобная пространственная аномалия

euclid.png
SCP-767
— Фотографии с места преступления

safe.png
SCP-768
— Дальнобойный будильник

safe.png
SCP-769
— Древняя энциклопедия

keter.png
SCP-770
— Ядерная плесень

keter.png
SCP-771
— Органический ИИ с самовосстановлением

euclid.png
SCP-772
— Гигантские осы-паразиты

safe.png
SCP-773
— Вуду-дартс

safe.png
SCP-774
— Свистящие кости

keter.png
SCP-775
— Голодные клещи

euclid.png
SCP-776
— Культ молодости

euclid.png
SCP-777
— Песчаное царство

euclid.png
SCP-778
— Райские водопады

safe.png
SCP-779
— Домовые осы

safe.png
SCP-780
— Бусина-семечко

euclid.png
SCP-781
— Невольный повелитель снов

safe.png
SCP-782
— Ваше Новое Я

keter.png
SCP-783
— Жил на свете человек Скрю
чен ные
ножки

euclid.png
SCP-784
— Вечное Рождество

keter.png
SCP-785
— Сеть закусочных

safe.png
SCP-786
— Двенадцатикратная воронка

safe.png
SCP-787
— Самолёт, которого не было


SCP-788

— Магматический карп keter.png

SCP-789 safe.png
— Охотник на педофилов


euclid.png SCP-790
— Кровь;

safe.png
SCP-791
— Водяной шар

euclid.png
SCP-792
— Трупоферма

euclid.png
SCP-793
— Призрачная болезнь

euclid.png
SCP-794
— Кораблекрушение в пустыне

euclid.png
SCP-795
— Кот, изменяющий реальность

euclid.png
SCP-796
— Речная кошка

euclid.png
SCP-797
— Любопытный полтергейст

safe.png
SCP-798
— Мозговая крыса

euclid.png
SCP-799
— Хищные одеяла

euclid.png
SCP-400
— Милые детишки

euclid.png
SCP-401
— Ладонное дерево

euclid.png
SCP-402
— Обсидиановый поглотитель

safe.png
SCP-403
— Взрывная зажигалка

safe.png
SCP-404
— Потерянные воспоминания, найденные воспоминания

euclid.png
SCP-405
— Вирус телепатии

euclid.png
SCP-406
— Тоннель лунатиков

na.png
SCP-407
— Песнь Бытия

safe.png
SCP-408
— Иллюзорные бабочки

keter.png
SCP-409
— Инфекционный кристалл

safe.png
SCP-410
— Жуки-редакторы

thaumiel.png
SCP-411
— Старик-контрамот

safe.png
SCP-412
— Мутагенное зеркальце

safe.png
SCP-413
— Бесконечный гараж

keter.png
SCP-414
— Лекарство горше болезни

safe.png
SCP-415
— Невольный донор

euclid.png
SCP-416
— Бесконечный лес

euclid.png
SCP-417
— Чумное дерево

safe.png
SCP-418
— Человек-пазл

safe.png
SCP-419
— Окно в Другой Мир

safe.png
SCP-420
— Агрессивное кожное заболевание

euclid.png
SCP-421
— Стая обломков

safe.png
SCP-422
— Лоскутное чудовище
euclid.png

SCP-423
— Персонаж-просебятина
keter.png

SCP-424
— Наноподражатели safe.png


SCP-425
— Передача бесконечности euclid.png


SCP-426
— Я тостер keter.png

safe.png SCP-427 euclid.png
— Лавкрафтовский амулет


SCP-428 safe.png
— Толпа


SCP-429
— Заводной телепортатор



safe.png SCP-430
— Крестьянская казнь



safe.png SCP-431
— Д-р Гидеон

safe.png
SCP-432
— Лабиринт в шкафчике

safe.png
SCP-433
— Ритуал

safe.png
SCP-434

— Встреча с самим собой euclid.png

SCP-435

— Творец Тьмы euclid.png

SCP-436

— Медальон ошибок keter.png


SCP-437 safe.png
— Лето 1991 года


SCP-438 safe.png
— Шпионская смирительная рубашка


SCP-439
— Костяной улей



safe.png SCP-440
— Песчаная экосистема



safe.png SCP-441
— Баран Иакова

euclid.png
SCP-442
— Всегда вовремя

euclid.png
SCP-443
— Мыслепотоковые мелки

safe.png
SCP-444

— Язык всемирной гармонии safe.png

SCP-445

— «Супер-бумага Доктора Развлечудова» safe.png

SCP-446

— Манекенщица euclid.png


SCP-447 euclid.png
— Шарик из зеленой слизи


SCP-448 keter.png
— Чёртик из табакерки


SCP-449
— Кишечный порошок



keter.png SCP-450
— Заброшенная федеральная тюрьма



euclid.png SCP-451
— Господин Одиночка

keter.png
SCP-452
— Пауки, крадущие сны

safe.png
SCP-453
— Ночной клуб по сценарию

keter.png
SCP-454

— Книга комиксов euclid.png

SCP-455

— Грузовое судно safe.png

SCP-456

— Усыпляющие клопы euclid.png


SCP-457 keter.png
— Горящий человек


SCP-458 keter.png
— Бесконечная коробка пиццы


SCP-459
— Межпланетный терморегулятор



euclid.png SCP-460
— Спиритуальный шторм



euclid.png SCP-461
— Телевизор наблюдения

euclid.png
SCP-462
— Авто для побега

euclid.png
SCP-463
— Ложка, сгибающая людей

safe.png
SCP-464

— Завод safe.png

SCP-465

— Вечеринка в коробке euclid.png

SCP-466

— Подвижные вены keter.png


SCP-467 safe.png
— Телефонная будка откровений


SCP-468 euclid.png
— Счёты


SCP-469
— Многокрылый ангел


SCP-470 safe.png
— Средоточие всего заброшенного


SCP-471 euclid.png
— Спутник


euclid.png SCP-472
— Кровавый камень



euclid.png SCP-473
— Супай



euclid.png SCP-474

— ℞FM

safe.png
SCP-475
— Мыльный Папа

euclid.png
SCP-476
— Карта, ведущая в никуда


SCP-477

&nbsp — Морские окаменелости

euclid.png
SCP-478
— Зубные феи

euclid.png
SCP-479
— Коридор №4, общежитие сотрудников класса D в Зоне 14

euclid.png
SCP-480
— Поле бесконечных кошмаров

euclid.png
SCP-481
— Шрамы

euclid.png
SCP-482
— Рубашка ментальных мутаций

safe.png
SCP-483
— Анти-возрастное плацебо

safe.png
SCP-484
— Наркотик, похищающий воспоминания

safe.png
SCP-485
— Ручка смерти

safe.png
SCP-486
— Кожа Коатликуэ

euclid.png
SCP-487
— Невозможный дом

euclid.png
SCP-488
— Притягивающий метеориты

euclid.png
SCP-489
— 1-555-МУХО-БОЙ

safe.png
SCP-490
— Фургончик с мороженым

euclid.png
SCP-491
— Гибельный свет

safe.png
SCP-492
— Ожившая тряпичная кукла

safe.png
SCP-493
— Репликант

safe.png
SCP-494
— Перчатки передачи материи

safe.png
SCP-495
— «Создаватель»

keter.png
SCP-496
— Затонувшая инфекция

euclid.png
SCP-497
— Ракушка

safe.png
SCP-498
— 11-минутная отсрочка

euclid.png
SCP-499
— Солнечный старик

euclid.png
SCP-100
— Развеселый развал растамана Родни

euclid.png
SCP-101
— Голодная сумка

euclid.png
SCP-102
— Собственность Маршалл, Картер и Дарк, Лимитед

euclid.png
SCP-103
— Не испытывающий голода человек

euclid.png
SCP-104
— Одинокий шар

safe.png
SCP-105
— «Айрис»

keter.png
SCP-106
— Старик

safe.png
SCP-107
— Черепаший панцирь

safe.png
SCP-108
— Экстрамерная полость носа

euclid.png
SCP-109
— Бесконечная фляга

euclid.png
SCP-110
— Подземный город

safe.png
SCP-111
— Драко-улитки

euclid.png
SCP-112
— Переменные горки

safe.png
SCP-113
— Переключатель пола

euclid.png
SCP-114
— Причина раздоров

safe.png
SCP-115
— Миниатюрный самосвал

euclid.png
SCP-116
— Хрупкий мальчик

safe.png
SCP-117
— Идеальный мультитул

euclid.png
SCP-118
— Ядерные микроорганизмы

safe.png SCP-119

— Времеволновая печь

euclid.png SCP-120

— Бассейн-телепорт


safe.png SCP-121

— Заповедник летающих зданий
euclid.png

SCP-122

— Больше никаких монɔтqоʚ

safe.png
SCP-123
— Удерживаемая маленькая чёрная дыра

euclid.png
SCP-124

— Плодородная почва euclid.png

SCP-125

— Заразное отражение safe.png

SCP-126

— Невидимый друг


SCP-127 safe.png
— Живое оружие


SCP-128 euclid.png
— Движущая сила во плоти

euclid.png SCP-129
— Прогрессирующее грибковое заражение



keter.png SCP-130
— Почтовое отделение



safe.png SCP-131
— «Каплеглазики»

keter.png
SCP-132
— Раздробленная пустыня

euclid.png
SCP-133
— Переводная дыра

keter.png
SCP-134

— Ребёнок со звёздными глазами safe.png

SCP-135

— Универсальный канцероген keter.png

SCP-136

— Обнажённая кукла


SCP-137 safe.png
— Реальная игрушка


SCP-138 euclid.png
— Всё ещё живой человек

keter.png SCP-139
— Глаз да глаз за Люциан



keter.png SCP-140
— Недописанная летопись



euclid.png SCP-141
— Судебник

euclid.png
SCP-142
— «Однорукий бандит»

euclid.png
SCP-143
— Роща клинковых деревьев

euclid.png
SCP-144

— Тибетский канат в небеса euclid.png

SCP-145

— Телефон, похищающий людей safe.png

SCP-146

— Бронзовая голова стыда


SCP-147 euclid.png
— Анахроничный телевизор


SCP-148 keter.png
— Сплав «Телекилл»

safe.png SCP-149
— Кровяные комары



euclid.png SCP-150
— Корабль Тесея



keter.png SCP-151
— Картина

safe.png
SCP-152
— Книга концов света

safe.png
SCP-153
— Черви в водостоке

safe.png
SCP-154

— Воинственные браслеты safe.png

SCP-155

— Бесконечно быстрый компьютер euclid.png

SCP-156

— Воскрешающий гранат


SCP-157 keter.png
— Хищник-подражатель


SCP-158 safe.png
— Экстрактор души

safe.png SCP-159
— Идеальный запиратель



keter.png SCP-160
— Хищный БПЛА



safe.png SCP-161
— Вертушка погибели

euclid.png
SCP-162
— Колючий ком

safe.png
SCP-163
— Потерпевший кораблекрушение

euclid.png
SCP-164
— Кальмарогенная опухоль

keter.png
SCP-165
— Ползучие плотоядные пески Туле

euclid.png
SCP-166
— Просто Гайя-подросток

safe.png
SCP-167
— Бесконечный лабиринт

safe.png
SCP-168
— Разумный калькулятор

keter.png
SCP-169
— Левиафан

safe.png
SCP-170
— Тюбик суперклея

euclid.png
SCP-171
— Пена с коллективным сознанием

euclid.png
SCP-172
— Заводной человек

euclid.png
SCP-173
— Скульптура — Первый объект


euclid.png
SCP-174
— Кукла чревовещателя

safe.png
SCP-175
— Карта сокровищ

euclid.png
SCP-176
— Наблюдаемая петля времени

safe.png
SCP-177
— Шах и мат

euclid.png
SCP-178
— 3D-очки

thaumiel.png
SCP-179
— Сестра Солнца

euclid.png
SCP-180
— Головной убор, крадущий личность

safe.png
SCP-181
— «Везунчик»

euclid.png
SCP-182
— «Наездник»

euclid.png
SCP-183
— «Ткач»

euclid.png
SCP-184
— Архитектор

safe.png
SCP-185
— Радиостанция

euclid.png
SCP-186
— Покончить с войнами

safe.png
SCP-187
— Двойное видение

safe.png
SCP-188
— Ремесленник

safe.png
SCP-189
— Подражающий волосам паразит

safe.png
SCP-190
— Ящик с игрушками

safe.png
SCP-191
— Ребёнок-киборг

safe.png
SCP-192
— Идеальный рентген

safe.png
SCP-193
— Платочная улитка

euclid.png
SCP-195
— «Медицинский виски»

euclid.png
SCP-196
— Временной парадокс

safe.png
SCP-197
— Теплица

euclid.png
SCP-198
— Стаканчик Джо

euclid.png
SCP-199
— Папоротники

Как работает CSP

Стандарт CSP сообщает сайту, какие источники данных заслуживают доверия, а какие — нет! Он работает по принципу «Что не разрешено (не упомянуто), то запрещено». Для этого на страницу добавляется HTTP-заголовок Content-Security-Policy и директивы. Каждая директива представляет собой «белый список», в котором через пробел прописаны источники контента. Администратор может дать доступ целому домену, его отдельным поддоменам или конкретной странице, уточнить допустимые правила взаимодействия с ними. 

Основные директивы

  • img-src —
    контролирует использование изображений с внешних ресурсов;
  • media-src —
    управляет загрузкой медиаконтента (видео, анимации, аудио);
  • script-src —
    ограничивает источники рабочих сценариев для веб-страницы;
  • frame-src —
    контролирует подгрузку веб-элементов, вложенных в контекст основной страницы;
  • default-src —
    резервная директива. Когда браузер или другая программа для работы с веб-страницами просматривает код сайта, то сначала анализирует содержание частных директив. Если информации нет, то обращается к резервной директиве. Например, браузер не «увидел» в img-src источники, из которых можно подгружать изображения. Тогда он обращается к default-src и использует указанный там список. 

Правила

  • none

    запрещает использование ресурсов из всех источников, включая домен сайта;
  • self —
    разрешает подгружать ресурсы, размещенные на домене защищаемого сайта.

Для каждой директивы должны быть прописаны значения. При этом правил из одной директивы не влияют на указанные в другой. Например, если на сайте в img-src помечено self, а в default-src — self и адрес http://cdn.example.com, то картинки будут загружаться только с собственного домена сайта.

Кроме источников, в директивах также прописываются правила:

  • unsafe-inline

    разрешает использование инлайн-стилей (когда стиль указан не в отдельном блоке/файле, а непосредственно в коде) и скриптов style и script, атрибутов CSS style, обработчиков событий (onclick, onmouseover и т.д.) и javascript-ссылок. Если это правило не прописано, все они запрещаются автоматически;
  • unsafe-eval

    применяется в директиве script-src. Когда этого правила нет, запрещается любая динамическая оценка кода (при выполнении).

Разработчики и системные администраторы, которые еще не решили, стоит ли внедрять CSP на сайтах, могут применять директиву Content-Security-Policy-Report-Only. В этом случае система защиты будет отмечать нарушения безопасности и отправлять CSP-отчеты, но не станет блокировать использование ресурсов даже из потенциально опасных источников.

Ограничение источников контента только исходным сервером (без поддоменов). Content-Security-Policy: default-src 'self'

Можно получать контент с только с доверенного домена и его поддоменов. Content-Security-Policy: default-src 'self' *.trusted.com

  • Изображения будут доступны из любого источника (источник — «*»).
  • Прочие медиафайлы — с media1.com и media2.com (без поддоменов).
  • Исполняемый код — с userscripts.example.com.

Нестандартные (Эзотерические, Нарративные) классы

По тем или иным причинам вместо основных классов используются другие
. Такие классы создаются под конкретную статью и не используются за ее границами. Они требуются затем, чтобы развернуть повествование в отдельно взятом SCP-объекте. Мы настоятельно рекоммендуем использовать один из стандартных классов объектов, указанных выше. И хотя некоторые авторы нарушают стандартную классификацию, это делается в исключительных случаях, и выбор нестандартного класса должен быть правильным образом обоснован. Многие пользователи могут негативно оценить статью за необоснованное использование нестандартного класса.

Nginx Шаг 2

Теперь нам нужно сбилдить нашу статику и положить ее в usr/local/var/www
или /opt/homebrew/var/www

В моем проекте это делается командой yarn run build

На выходе получаем папку static
, берем ее внутренности и перемещаем в usr/local/var/www

После этого перезапускаем nginx
командой sudo nginx -s stop && sudo nginx

Теперь на http://localhost:3000
мы должны увидеть наше приложение

P. S Этот шаг нужно повторять каждый раз, когда вы обновляете код своего приложения, если хотите проверить результат

Nginx Шаг 4

По идее сейчас все готово для того чтобы внедрять политику CSP.

Для того чтобы ее настраивать нам нужно понимать как она работает.

А работает она с помощью заголовка Content-Security-Policy, мы будем описывать правила, которые браузер должен будет соблюдать, а если какое-либо действие пользователя будет не по правилам — браузер откажется это выполнять.

Настройка начинается с того, что сначала мы запрещаем все, а потом начинаем добавлять исключения.

Начнем с правила script-src
оно определяет допустимые источники JavaScript.

В nginx  добавляем заголовок со следующим значением:

add_header Content-Security-Policy "script-src 'self' 'unsafe-inline'";

В коде это выглядит так:

   

worker_processes  1;



events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    
    keepalive_timeout  65;

    server {
        listen       3000 ssl;
        server_name  localhost;

        
        ssl_certificate /usr/local/etc/ca-certificates/cert.pem;

        
        ssl_certificate_key /usr/local/etc/ca-certificates/key.pem;

        location / {
			add_header Content-Security-Policy "script-src 'self' 'unsafe-inline'";
            root   html;
            index  index.html index.htm;
        }


        error_page   403 404 500 502 503 504  /index.html;

        location = / {
            root   html;
        }
    }

    include servers/*;
}  
  

Перезапускаем nginx командой sudo nginx -s stop && sudo nginx

И перезагружаем наш сайт. Если у вас есть сторонние источники, например метрика, рекапча и тд, то вы увидите ошибку в консоли подобную этой и белую страницу

КАКИЕ ЕСТЬ CSP

Это говорит нам о том, что у нас есть источник который не описан в политике csp, и поэтому браузер его не загружает, давайте добавим источник в список разрешенных.

Перезапускаем nginx командой sudo nginx -s stop && sudo nginx

Обновляем страницу и видим что ошибка пропала. По такой же схеме, у вас может быть много ошибок, и далее вам нужно просто внести ресурсы в белый список.

Nginx Шаг 3

Далее будет не лишним настроить протокол https
, чтобы наш сайт открывался по https://localhost:3000

Для этого нам нужно сгенерировать ssl сертификат. В терминале переходим в папку, в которую сгенерируем 2 новых файла. Лично мне удобно открыть WebStorm со своим проектом, и использовать встроенный терминал.

Вводим в терминал команду openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

После выполнения команды жмем enter чтобы скипать шаги до шага Common name
.

На этом моменте для Common name
вводим 127.0.0.1

чтобы установить сертификат в корневом хранилище сертификатов вашей ОС или в браузере, чтобы он был надежным.

В корне проекта появиться два файла cert.pem key.pem

Далее нам нужно перенести эти два файла в папку /usr/local/etc/ca-certificates
или /opt/homebrew/etc/ca-certificates

И в конфиге nginx добавить следующие поля ниже поля server_name

P. S Опять же путь до файлов может отличаться

   
ssl_certificate /usr/local/etc/ca-certificates/cert.pem;

ssl_certificate_key /usr/local/etc/ca-certificates/key.pem;  
  

Так же требуется добавить приписку ssl
для поля listen

Получиться примерно так:

   

worker_processes  1;



events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    
    keepalive_timeout  65;

    server {
        listen       3000 ssl;
        server_name  localhost;

        
        ssl_certificate /usr/local/etc/ca-certificates/cert.pem;

        
        ssl_certificate_key /usr/local/etc/ca-certificates/key.pem;

        location / {
            root   html;
            index  index.html index.htm;
        }


        error_page   403 404 500 502 503 504  /index.html;

        location = / {
            root   html;
        }
    }

    include servers/*;
}  
  

Перезапускаем nginx командой sudo nginx -s stop && sudo nginx

Теперь сайт должен открываться на https://localhost:3000

Что дальше?

Окей, мы разобрались с тем что такое CSP, но с чего начать, а самое главное как мы будем тестировать, работает этот механизм или нет?

Я попробую пошагово рассказать свой опыт настройки этого механизма, и что я для этого использовал.

Мое приложение использует стек:

Так же есть прямой доступ к конфигу webpack с конфигурацией сборки.

При локальной разработке у меня используется сервер на node.js "start": "node scripts/start.js"

Но для нашего тестирования CSP нам потребуется настраивать заголовки на сервере, и самым популярным решением является поднять локально сервер на nginx вместо нашего скрипта.

Для чего нужен CSP

По политике безопасности в интернете, каждый сайт должен обращаться только к своим данным (same-origin policy). На практике ресурсы постоянно взаимодействуют с другими источниками: социальными сетями, сервисами метрики, сетями доставки контента и т.д. Это используют злоумышленники. Они внедряют вредоносный код в подгружаемую на сайт внешнюю информацию, которую он считает безопасной. Цель CSP — ограничить список ресурсов, откуда может загружаться контент, например изображения для страницы.

Часто задаваемые вопросы

Что такое класс объекта?

Класс объекта — часть стандартного шаблона статьи, а также примерный индикатор того, насколько опасен и сложен в содержании объект.

Что такое Правило коробки?

Правило коробки — это полуофициальное правило, позволяющее определить, какой класс является для объекта наиболее подходящим (см. памятку в начале статьи).

Отдельно стоит отметить, что нечто автономное, живое и/или разумное почти всегда получает как минимум
«Евклида». Другими словами, если запереть нечто живое в коробку и убрать её подальше, то рано или поздно оно задохнётся или помрёт от голода или жажды, а такой исход нежелателен. Нечто, наделённое разумом, может найти выход из-под содержания или прекратить сотрудничать, что резко осложнит содержание.

Я нашёл объект с неверно заданным классом, что мне делать?

Границы между классами намеренно сделаны нечёткими, чтобы не ограничивать творческую свободу авторов; жесткая и регламентированная система классов может помешать авторам писать так, как они видят, и по этой причине несколько предложений о формализации системы категорий уже были отвергнуты админсоставом SCP Wiki.

При обнаружении объекта, класс которого, по вашему мнению, указан неверно, можете поднять этот вопрос в обсуждении оригинальной
статьи (не перевода) и посмотреть на реакцию других участников. Если объяснение вас не устраивает, можете также выразить своё мнение на форуме и голосованием в статье.

Если объект очень опасен, должен ли его класс быть более высоким?

Нет, опасность не является фактором для выставления того или иного класса. Как было неоднократно отмечено выше, класс объекта зависит от сложности его содержания, а не от опасности, которую он представляет. Так, например, кнопка, которая при нажатии может уничтожить целую вселенную, будет «Безопасным», в то время как кошка, которая случайным образом меняет себя местами с другими кошками в любом месте на земле, будет являться «Кетером».

версия страницы: 32, Последняя правка: 11 Авг. 2022, 09:53 (415 дней назад)

Nginx Шаг 1

В зависимости от вашей os, команды по установке и запуску nginx могут немного отличаться. Так как я использую mac os, я устанавливал nginx через brew ( https://brew.sh
)

После того как мы установили nginx, у нас есть доступ к базовой конфигурации.

Для Mac Os nginx лежит по адресу /usr/local/etc/nginx
либо /opt/homebrew/etc/nginx/nginx.conf
базовый конфиг nginx.conf

Первое что я хотел сделать — чтобы nginx, для начала, просто отдавал мою статику.

Поэтому мой базовый конфиг для локальной работы выглядел так:

   
worker_processes  1;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       3000;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }


        error_page   403 404 500 502 503 504  /index.html;

        location = / {
            root   html;
        }
    }

    include servers/*;
}  
  

В данном случае наш сервер должен отдавать статику по адресу http://localhost:3000/

Теперь можем запустить nginx командой sudo nginx

Если мы перейдем по адресу http://localhost:3000/
то должны увидеть что то вроде этого:

КАКИЕ ЕСТЬ CSP

Nginx Шаг 6

После того как мы добавили nonce=» CSP_NONCE
» ко всем встроенным скриптам и стилям, нужно расширить конфигурацию nginx, и добавить:

Два поля в раздел location
:

sub_filter **CSP_NONCE** $request_id;

Поле sub_filter_once
указывает следует ли искать каждую строку для замены один раз.

Поле sub_filter
задает строку для замены и строку замены.

То есть мы находим строку **CSP_NONCE**
в нашей статике, и заменяем ее на значение переменной $request_id

Из заголовка удаляем строку unsafe-inline
которая разрешала нам использование всех встроенных скриптов, и добавляем 'nonce-$request_id'
и 'strict-dynamic'

'strict-dynamic'
— указывает, что доверие, явно предоставляемое скрипту, присутствующему в разметке, путем сопровождения его одноразовым значением или хэшем, должно распространяться на все скрипты, загруженные этим корневым скриптом.

Теперь наш каждый встроенный скрипт будет помечен динамических хешем, тем самым подтверждая что это наш скрипт и его можно загружать.

    

worker_processes  1;



events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    
    keepalive_timeout  65;

    server {
        listen       3000 ssl;
        server_name  localhost;

        
        ssl_certificate /usr/local/etc/ca-certificates/cert.pem;

        
        ssl_certificate_key /usr/local/etc/ca-certificates/key.pem;

        location / {
			add_header Content-Security-Policy "script-src 'self' 'nonce-$request_id' 'strict-dynamic' https://www.google.com/recaptcha/";
			sub_filter_once off;
            sub_filter **CSP_NONCE** $request_id;
            root   html;
            index  index.html index.htm;
        }


        error_page   403 404 500 502 503 504  /index.html;

        location = / {
            root   html;
        }
    }

    include servers/*;
}  
  

После перезапуска nginx, у нас должны пропасть ошибки из консоли.

Nginx Шаг 5

Казалось бы мы настроили первое правило script-src
— но нет. В нашем правиле есть ключевое слово 'unsafe-inline'
который означает что мы разрешаем использование всех встроенных скриптов. Использование этого ключевого слова считается небезопасным.

Давайте попробуем удалить это ключевое слово, и посмотреть что будет:

КАКИЕ ЕСТЬ CSP

Высокая вероятность того что вы получите такую ошибку выше, и скорее всего подобных ошибок будет +- около 10, а то и больше, в зависимости от того сколько встроенных скриптов вы используете.

Так что же тут случилось, откуда тут вообще взялась эта ошибка?

Так как мы отказались от ключевого слово 'unsafe-inline'
— то мы отказались и от использования встроенных скриптов. Теперь же нам нужно научиться “помечать” какие встроенные скрипты являются безопасными.

Хорошей практикой считается добавлять для наших встроенных скриптов атрибут nonce
, и указывать в нем динамический хеш, тем самым валидируя скрипты. Этот динамический хеш будет генерироваться нашим сервером nginx. Таким образом, если встроенный скрипт не будет иметь хеш, или он будет не совпадать — то nginx откажется его подгружать, тем самым мы себя обезопасим от разных атак.

Настройка хеша, включает в себя изменение кода как со стороны frontend так и со стороны nginx.

Для начала начнем со стороны frontend. В целом, описанные ниже шаги можно применить на большинство фреймворков и библиотек, так как основные настройки делаются в корневом index.js и в webpack конфиге.

От каких атак защищает CSP

XSS (Cross-Site Scripting) — «межсайтовый скриптинг»

На страницу сайта внедряется вредоносный код, связанный с сервером злоумышленника. Браузер доверяет источнику контента и выполняет директивы.

Как защищает CSP:
администраторы сервера, на котором расположен сайт, могут составить «белый список» доменов, заслуживающих доверия. Так можно сократить или полностью исключить обращение к источникам потенциально вредоносного скрипта. Радикальный вариант защиты — глобальный запрет на исполнение скриптов.

Перехват пакетов

Это извлечение конкретных данных из общего потока информации между сайтом и компьютером пользователя. Используется вредоносный код, внедренный в протоколы передачи данных. Могут быть перехвачены и похищены сетевые пароли, номера банковских карт или телефонные номера, указанные при оформлении заказов.

Как защищает CSP:
сервер может указать, какие протоколы разрешено использовать. Стратегия безопасности передачи данных отмечает файлы cookie атрибутами secure и автоматически перенаправляет со страниц HTTP на их аналоги HTTPS. Сайты также могут использовать HTTP-заголовок Strict-Transport-Security, чтобы браузеры подключались по зашифрованному каналу. От перехвата пакетов это не защитит, но поможет избежать расшифровки.

Типы потенциально опасного содержимого

Скрипты

Это последовательности действий (сценарии), написанные на JavaScript
, PHP
, Perl, Python или другом скриптовом языке программирования. Скрипты описывают автоматические действия, которые будет выполнять функциональный элемент сайта — например форма оплаты или обратной связи.

Изображения

Хотя картинка (фото, баннер и т.д.) представляет собой набор пикселей, файл с ней размещается и отображается на сайте с помощью скрипта. Именно в сценарий, по которому работает изображение, злоумышленник может вставить вредоносный код.

Стили

Это описания внешнего вида страницы и ее элементов (надписей, кнопок, подсветок и т.д.) на языке CSS. Внедрив вредоносный код в стили, злоумышленник может нарушить отображение сайта или использовать стили для доступа к другой секретной информации — например паролям пользователей.

Медиа

Это анимированные изображения, видеоролики, аудиофайлы. Опасность исходит не от содержимого, а от скриптов и стилей, которые их описывают и заставляют работать на сайте.

Шрифты

С их помощью отображаются статьи, заголовки и другие текстовые элементы на сайте. Шрифт — текстовый файл, поэтому может являться непосредственным источником опасности. Другой вариант — использование описывающего его стиля как носителя вредоносного кода.

Объекты

Это видеофайлы или плагины, расширения, счетчики метрики и т.д. В зависимости от типа объекта источником опасности может быть код или описывающие его скрипты и стили.

Фреймы

Тегами frame и iframe описываются встраивания одних веб-страниц в контекст других. Например, с их помощью отображаются интерактивные карты с адресом компании в разделе «Контакты» на сайтах. Источник опасности — вложенный в основную страницу веб-документ или объект.

Манифесты

Это веб-приложения, которые пользователь может установить на экран гаджета или десктоп ПК. Они объединяют в себе признаки традиционного сайта и нативного ПО. Источник опасности — как код самого манифеста, так и используемые им сторонние ресурсы.

Nginx Шаг 7

Теперь продолжим добавлять различные директивы, например style-src
со значением self

Перезапускаем nginx, обновляем страницу, и смотрим ошибки в консоли.

Скорее всего самые первые ошибки будут указывать на ресурсы, которых нет в white list.

Добавляем ресурс и nonce:

style-src “’self’ ‘nonce-$request_id’ https://*.example.com”

 Так же для удобства, выносим каждую директиву в переменную, и получаем:

   worker_processes  1;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       3000 ssl;
        server_name  localhost;

        ssl_certificate /opt/homebrew/etc/ca-certificates/cert.pem;

        ssl_certificate_key /opt/homebrew/etc/ca-certificates/key.pem;

        set $CSP_SCRIPT_SRC "'self' 'nonce-$request_id' 'strict-dynamic' https://www.google.com/recaptcha/";
        set $CSP_STYLE_SRC "'self' 'nonce-$request_id' https://*.example.com";

        location / {
            add_header Content-Security-Policy "script-src $CSP_SCRIPT_SRC; style-src $CSP_STYLE_SRC";
            sub_filter_once off;
            sub_filter **CSP_NONCE** $request_id;
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /index.html;
        location = / {
            root   html;
        }
    }

    include servers/*;
}  
  

По такому принципу, вы можете добавить остальные директивы.

У вас получиться примерно так:

   #user  nobody;
worker_processes  1;



events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       3000 ssl;
        server_name  localhost;

        # location of ssl certificate
        ssl_certificate /usr/local/etc/ca-certificates/cert.pem;

        # location of ssl key
        ssl_certificate_key /usr/local/etc/ca-certificates/key.pem;

        set $CSP_SCRIPT_SRC "'self' 'nonce-$request_id' 'strict-dynamic' https://www.google.com/recaptcha/";

        set $CSP_STYLE_SRC "'self' 'nonce-$request_id' https://*.example.com";

        set $CSP_CONNECT_SRC "'self' https://*.example.com";

        set $CSP_FONT_SRC "'self' https://fonts.gstatic.com/";

        set $CSP_IMG_SRC "'self'";

        set $CSP_OBJECT_SRC "'self'";

        set $CSP_BASE_URI "'self'";

        set $CSP_FRAME_SRC "'self' https://www.google.com https://mc.yandex.ru";

        set $CSP_MANIFEST_SRC "'self'";

        set $CSP_MEDIA_SRC "'self'";

        set $CSP_WORKER_SRC "'self'";

        set $CSP_FRAME_ANCESTORS "'self'";

        location / {
            add_header Content-Security-Policy "default-src 'none'; script-src $CSP_SCRIPT_SRC; style-src $CSP_STYLE_SRC; connect-src $CSP_CONNECT_SRC; font-src $CSP_FONT_SRC; img-src $CSP_IMG_SRC; object-src $CSP_OBJECT_SRC; base-uri $CSP_BASE_URI; frame-src $CSP_FRAME_SRC; manifest-src $CSP_MANIFEST_SRC; media-src $CSP_MEDIA_SRC; worker-src $CSP_WORKER_SRC; frame-ancestors $CSP_FRAME_ANCESTORS;";
            sub_filter_once off;
            sub_filter **CSP_NONCE** $request_id;
            root   html;
            index  index.html index.htm;
        }


        error_page   403 404 500 502 503 504  /index.html;

        location = / {
            root   html;
        }
    }

    include servers/*;
}  
  

В целом на этом моменте можно считать настройку CSP завершенной.

Уязвимости CSP

Несмотря на настройки, CSP можно обойти. Количество «лазеек» зависит от его поддержки браузерами. Например, Internet Explorer использует стандарт частично. В меньшем количестве уязвимости есть в браузерах вроде Google Chrome, Opera, Safari.

JavaScript внутри фрейма

Когда текстовый документ или изображение открываются на любом сайте, они автоматически преобразуются в HTML-страницу с помощью iframe. Внутри него можно прописать вредоносный код. Так как такие автоматически созданные веб-документы не имеют настроенного CSP, браузер выполнит прописанный код без ограничений.

Отсутствие CSP в ошибках сервера

Разработчики часто защищают только рабочие страницы. Если злоумышленник пропишет в фрейме страницы с ошибкой 404 (или другой с кодом 4**) свой скрипт, то сможет похитить данные.

Подгрузка скриптов с файлообменников

Некоторые сайты используют облачные хранилища данных (Яндекс. Диск, Google Drive и т.д.) как источники контента. В этом случае злоумышленник может разместить на виртуальном диске вредоносный файл или скрипт, который будет исполняться системой.

Большинство уязвимостей CSP связано не с его недостатками, а с неправильным использованием разработчиками. Корректное внедрение стандарта на сайте позволяет защитить ресурс и данные пользователей.

Настройка frontend приложения

Сама настройка заключается в том, что мы должны добавить атрибут nonce="CSP_NONCE"
ко всем встроенным скриптам. Само значение CSP_NONCE
на самом деле может быть любым. Это значение нужно для того, чтобы бы в будущем наш nginx находил это значение в статических файлах js, html и заменял на динамический хеш.

Начнем с простого, зайдем в наш index.html файл, и добавим этот атрибут ко всем подключаемым скриптам, стилям и шрифтам. К примеру у меня есть следующие скрипт и шрифт, в которые я добавляю атрибут:

   
<link nonce="**CSP_NONCE**" rel="preconnect" href="https://fonts.googleapis.com" />

<script nonce="**CSP_NONCE**" type="text/javascript">
    window.dataLayer=window.dataLayer||[];
</script>  
  

Добавляем в наш index.html следующую запись

   <meta property="csp-nonce" content="**CSP_NONCE**" />  
  

На эту запись могут ориентироваться некоторые UI библиотеки, например Material UI

Так же добавляем в index.html следующий скрипт

   <script type="text/javascript" nonce="**CSP_NONCE**">
    window.__webpack_nonce__ = "**CSP_NONCE**";
</script>  
  

Тут мы глобально задаем новую переменную webpack_nonce
на которую будут ориентироваться некоторые скрипты и библиотеки.

Как правило в этом месте описаны настройки для различных плагинов eslint, html.

Нам нужно установить плагин html-webpack-inject-attributes-plugin

Подключить его вверху конфига:

     
  

И добавить следующую запись последним элементов массива plugins

   plugins: [
	// ...any plugins
	new HtmlWebpackInjectPlugin({
    nonce: "**CSP_NONCE**",
	}),
]  
  

Так как использую react, у меня есть скрипт scripts/build.js
, который запускается командой yarn run build
, этот файл используется для сборки приложения в production

У вас может быть точно такой же файл, либо какой то другой аналогичный скрипт. В него нужно добавить следующую запись:

   process.env.INLINE_RUNTIME_CHUNK = "false";  
  

Открываем наш корневой index.js, и в самый вверх добавляем запись:

   // eslint-disable-next-line no-undef
__webpack_nonce__ = window.__webpack_nonce__;  
  

По идее все эти шаги должны привести к тому, что каждый ваш встроенный скрипт, стиль, включая динамические, будет иметь атрибут nonce=» CSP_NONCE
» :

Памятка по классификации

  • Если положить объект в коробку, убрать её подальше, и ничего плохого не случится, то это, скорее всего, Безопасный
    .
  • Если положить объект в коробку, убрать её подальше, и нельзя заранее сказать, что случится, то это, вероятно, Евклид
    .
  • Если положить объект в коробку, убрать её подальше, и будут катастрофические разрушения со множеством жертв, то это, должно быть, Кетер
    .
  • Если объект и есть
    коробка, то это, не иначе, Таумиэль
    .
  • Если объект нельзя положить в коробку и он вот-вот уничтожит мир, это, разумеется, Аполлион
    .
  • Если объект можно убрать в коробку, но лучше этого не делать, это, стало быть, Архонт
    .

Все аномальные объекты, сущности и явления, требующие особых условий содержания, подлежат присвоению класса. От класса объекта зависит приоритет исследовательских работ, бюджет объекта и другие вопросы. Класс присваивается объекту, исходя из различных соображений, самым важным из которых являются сложность содержания объекта и опасность его как для Фонда, так и для человечества в целом.

Классификация той или иной аномалии может быть дополнена и/или пересмотрена по мере получения новой информации об объекте, сущности или явлении.

Список российских объектов, перенесённых на англовики


Список аномальных предметов Российского филиала
— список предметов, которые нельзя назвать полноценными SCP-объектами несмотря на наличие аномальных свойств. Доступен для пополнения сотрудниками Российского филиала.

Список аномальных явлений Российского филиала
— список необычных явлений, зачастую произошедших единожды и слишком быстро, чтобы Организация могла оперативно среагировать. Доступен для пополнения сотрудниками Российского филиала.


версия страницы: 555, Последняя правка: 22 Сен. 2023, 18:36 (8 дней назад)

ЭЦП:  Получить лицензию КриптоПро и настройка рабочего места ООО Форт Бизнес
Оцените статью
ЭЦП64
Добавить комментарий