Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Эдриан_Прутяну_Как_стать_хакером_сборник_практическиз_сценариев.pdf
Скачиваний:
18
Добавлен:
19.04.2024
Размер:
20.34 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

 

o

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

w Click

to

BUY 212  Глава 9.Практические атаки на стороне клиента

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

CDNJS является ярким примеромтого,как сайты получаютвыгоду,включая

 

 

 

e

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

код JavaScript от сторонних производителей.

CDNJS–сеть доставки содержимого с открытым исходным кодом, предоставляющая практически все библиотеки JavaScript.Дополнительную информацию об этом отличном сервисе можно найти на странице https://cdnjs.com.

Любые другие типы данных, которые можем попытаться загрузить из разных источников с использованием JavaScript, будут отклонены. Эти данные включат в себя шрифты, файлы в формате JSON, XML или HTML.

Куки-файлы заслуживают особого упоминания, когда речь идет о правиле ограничения домена. Эти файлы обычно привязаны либо к домену, либо к родительскому домену и могут быть ограничены безопасными HTTP-со­ единениями.Браузерамтакже можетбытьдано указание запретитьJavaScriptдоступ к определенным куки-файлам, чтобы такие атаки, как межсайтовый скриптинг, не могли извлечь информацию о сеансе.

Политика куки-файлов настраивается сервером приложений при первоначальной настройке куки с использованием заголовка ответа HTTP Set-Cookie. Как я уже говорил ранее, если не указано иное, куки-файлы обычно связаны с доменным именем приложения. Также можно использовать wildcard-домены, которые будут велеть браузеру передавать куки-файлы для запросов ко всем поддоменам.

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

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

Совместное использование ресурсов разными источниками

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

Попытка прочитать данные API, представленные в формате JSON, обычно отклоняется этим правилом, если схема, домен и порт не совпадают. Это не-

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

C

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

Совместное использование ресурсов разными источниками  213 BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

удобно,и приложения становятся сложными для разработки и масштабирова-

 

 

e

 

 

 

 

df

 

 

n

e

 

 

 

 

df

 

 

n

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

ния, если мы ограничены одними и теми же доменом, портом и схемой. Чтобы смягчить правило ограничения домена, ввели технологию совмест-

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

HTTP-ответ сервера приложений может содержать заголовок Access- Control-Allow-Origin, который клиент вправе использовать, чтобы определить, следуетли ему завершить соединение и получить данные.

Документацию по CORS найдете на сайте https://developer. mozilla.org/en-US/docs/Web/HTTP/CORS.

Можно увидеть политику общедоступного API Spotify, используя команду curl.

root@spider-c2-1:~# curl -I https://api.spotify.com/v1/albums

HTTP/2 401

www-authenticate: Bearer realm="spotify" content-type: application/json content-length: 74 access-control-allow-origin: *

access-control-allow-headers: Accept, Authorization, Origin, Content-Type, Retry-After

access-control-allow-methods: GET, POST, OPTIONS, PUT, DELETE, PATCH

access-control-allow-credentials: true access-control-max-age: 604800

via: 1.1 google alt-svc: clear

root@spider-c2-1:~#

Этот конкретный API является общедоступным и, следовательно, сообщит клиенту, что всем источникам разрешено читать содержимое ответа. Это делается с помощью знака звездочки (*), установленного в качестве значения для Access-Control-Allow-Origin. Закрытые API обычно используют более конкретное значение, например ожидаемый URL-адрес.

Сервер Spotify отвечает другими заголовками Access-Control, которые указывают, какие методы и заголовки принимаются и можно ли передавать учетные данные с каждым запросом. Политика CORS может быть довольно