<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»>
— Таумиэль

— Нестандартный класс

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

— Безопасный

— Евклид

— Кетер

— Таумиэль

— Нестандартный класс
<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
— Проданный смех

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.
- Подробнее
- Как работает CSP
- Основные директивы
- Правила
- Нестандартные (Эзотерические, Нарративные) классы
- Nginx Шаг 2
- Nginx Шаг 4
- Nginx Шаг 3
- Что дальше?
- Окей, мы разобрались с тем что такое CSP, но с чего начать, а самое главное как мы будем тестировать, работает этот механизм или нет?
- Я попробую пошагово рассказать свой опыт настройки этого механизма, и что я для этого использовал.
- Мое приложение использует стек:
- Так же есть прямой доступ к конфигу webpack с конфигурацией сборки.
- Для чего нужен CSP
- Часто задаваемые вопросы
- Nginx Шаг 1
- Nginx Шаг 6
- Nginx Шаг 5
- От каких атак защищает CSP
- XSS (Cross-Site Scripting) — «межсайтовый скриптинг»
- Перехват пакетов
- Типы потенциально опасного содержимого
- Скрипты
- Изображения
- Стили
- Медиа
- Шрифты
- Объекты
- Фреймы
- Манифесты
- Nginx Шаг 7
- Уязвимости CSP
- JavaScript внутри фрейма
- Отсутствие CSP в ошибках сервера
- Подгрузка скриптов с файлообменников
- Настройка frontend приложения
- Памятка по классификации
- Список российских объектов, перенесённых на англовики
Следующие объекты упомянутые в игре, но нет никаких указаний на то, что эти объекты могут быть введены в игру в видимой или немой форме.
- ↑ 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 является эффективным инструментом для укрепления безопасности веб-приложений и защиты пользователей от различных видов уязвимостей.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SCP-827
— Суп

SCP-828
— ᖃᓪᓗᐱᓪᓗᐃᑦ

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

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

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

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

SCP-834
— Маркеры

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

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

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

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

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

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

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

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

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

SCP-844
— Плакса

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

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

SCP-847
— Манекен

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

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

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

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

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

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

SCP-854
— Мост Снов

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

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

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

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

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

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

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

SCP-862
— Крысы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SCP-878
— Актёр

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

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

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

SCP-882
— Машина

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SCP-703
— В шкафу

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

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

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

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

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

SCP-709
— Лесное Око

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

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

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

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

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

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

SCP-716
— Поезд

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

SCP-718
— Глаз

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

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

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

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

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

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

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

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

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

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

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

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

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

SCP-733
— Ножницы

SCP-734
— Младенец

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

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

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

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

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

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

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

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

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

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

SCP-745
— Фары

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

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

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

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

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

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

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

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

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

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

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

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

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

SCP-759
— Закваска

SCP-760
  — Щёточники

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

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

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

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

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

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

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

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

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

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

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

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

SCP-773
— Вуду-дартс

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

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

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

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

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

SCP-779
— Домовые осы

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

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

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

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

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

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

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

SCP-787
— Самолёт, которого не было
SCP-788
— Магматический карп 
SCP-789 
— Охотник на педофилов
SCP-790
— Кровь;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SCP-424
— Наноподражатели 
SCP-425
— Передача бесконечности 
SCP-426
— Я тостер 
SCP-427 
— Лавкрафтовский амулет
SCP-428 
— Толпа
SCP-429
— Заводной телепортатор
SCP-430
— Крестьянская казнь
SCP-431
— Д-р Гидеон

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

SCP-433
— Ритуал

SCP-434
— Встреча с самим собой 
SCP-435
— Творец Тьмы 
SCP-436
— Медальон ошибок 
SCP-437 
— Лето 1991 года
SCP-438 
— Шпионская смирительная рубашка
SCP-439
— Костяной улей
SCP-440
— Песчаная экосистема
SCP-441
— Баран Иакова

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

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

SCP-444
— Язык всемирной гармонии 
SCP-445
— «Супер-бумага Доктора Развлечудова» 
SCP-446
— Манекенщица 
SCP-447 
— Шарик из зеленой слизи
SCP-448 
— Чёртик из табакерки
SCP-449
— Кишечный порошок
SCP-450
— Заброшенная федеральная тюрьма
SCP-451
— Господин Одиночка

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

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

SCP-454
— Книга комиксов 
SCP-455
— Грузовое судно 
SCP-456
— Усыпляющие клопы 
SCP-457 
— Горящий человек
SCP-458 
— Бесконечная коробка пиццы
SCP-459
— Межпланетный терморегулятор
SCP-460
— Спиритуальный шторм
SCP-461
— Телевизор наблюдения

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

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

SCP-464
— Завод 
SCP-465
— Вечеринка в коробке 
SCP-466
— Подвижные вены 
SCP-467 
— Телефонная будка откровений
SCP-468 
— Счёты
SCP-469
— Многокрылый ангел
SCP-470 
— Средоточие всего заброшенного
SCP-471 
— Спутник
SCP-472
— Кровавый камень
SCP-473
— Супай
SCP-474
— ℞FM

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

SCP-476
— Карта, ведущая в никуда
SCP-477
  — Морские окаменелости

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

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

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

SCP-481
— Шрамы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SCP-497
— Ракушка

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

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

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

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

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

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

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

SCP-105
— «Айрис»

SCP-106
— Старик

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

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

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

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

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

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

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

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

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

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

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

SCP-118
— Ядерные микроорганизмы
SCP-119
— Времеволновая печь
SCP-120
— Бассейн-телепорт
SCP-121
— Заповедник летающих зданий

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

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

SCP-124
— Плодородная почва 
SCP-125
— Заразное отражение 
SCP-126
— Невидимый друг
SCP-127 
— Живое оружие
SCP-128 
— Движущая сила во плоти
SCP-129
— Прогрессирующее грибковое заражение
SCP-130
— Почтовое отделение
SCP-131
— «Каплеглазики»

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

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

SCP-134
— Ребёнок со звёздными глазами 
SCP-135
— Универсальный канцероген 
SCP-136
— Обнажённая кукла
SCP-137 
— Реальная игрушка
SCP-138 
— Всё ещё живой человек
SCP-139
— Глаз да глаз за Люциан
SCP-140
— Недописанная летопись
SCP-141
— Судебник

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

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

SCP-144
— Тибетский канат в небеса 
SCP-145
— Телефон, похищающий людей 
SCP-146
— Бронзовая голова стыда
SCP-147 
— Анахроничный телевизор
SCP-148 
— Сплав «Телекилл»
SCP-149
— Кровяные комары
SCP-150
— Корабль Тесея
SCP-151
— Картина

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

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

SCP-154
— Воинственные браслеты 
SCP-155
— Бесконечно быстрый компьютер 
SCP-156
— Воскрешающий гранат
SCP-157 
— Хищник-подражатель
SCP-158 
— Экстрактор души
SCP-159
— Идеальный запиратель
SCP-160
— Хищный БПЛА
SCP-161
— Вертушка погибели

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

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

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

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

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

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

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

SCP-169
— Левиафан

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

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

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

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

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

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

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

SCP-177
— Шах и мат

SCP-178
— 3D-очки

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

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

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

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

SCP-183
— «Ткач»

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

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

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

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

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

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

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

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

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

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

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

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

SCP-197
— Теплица

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

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, и поэтому браузер его не загружает, давайте добавим источник в список разрешенных.
Перезапускаем 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/
то должны увидеть что то вроде этого:

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'
который означает что мы разрешаем использование всех встроенных скриптов. Использование этого ключевого слова считается небезопасным.
Давайте попробуем удалить это ключевое слово, и посмотреть что будет:

Высокая вероятность того что вы получите такую ошибку выше, и скорее всего подобных ошибок будет +- около 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 дней назад)
