0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Представим, что мы сидим в чате и во время разговора сайт просит нас еще раз авторизоваться - ввести логин и пароль. Возможно, случился сбой, поэтому мы вводим свои данные. Но в итоге сообщение пропадает, и через пару минут нас выкидывает из чата, а пароль больше не подходит.</p>
1
<p>Представим, что мы сидим в чате и во время разговора сайт просит нас еще раз авторизоваться - ввести логин и пароль. Возможно, случился сбой, поэтому мы вводим свои данные. Но в итоге сообщение пропадает, и через пару минут нас выкидывает из чата, а пароль больше не подходит.</p>
2
<p>Любые проекты, чаты и сайты пишут люди. Чем крупнее проект, тем больше шансов, что у сайта или приложения найдутся так называемые "дыры" - незащищенные участки, которыми могут воспользоваться злоумышленники.</p>
2
<p>Любые проекты, чаты и сайты пишут люди. Чем крупнее проект, тем больше шансов, что у сайта или приложения найдутся так называемые "дыры" - незащищенные участки, которыми могут воспользоваться злоумышленники.</p>
3
<p>В этом уроке мы познакомимся с понятием уязвимости и разберем одну из самых простых в исполнении атак - XSS</p>
3
<p>В этом уроке мы познакомимся с понятием уязвимости и разберем одну из самых простых в исполнении атак - XSS</p>
4
<h2>Уязвимости и атаки</h2>
4
<h2>Уязвимости и атаки</h2>
5
<p>Цели злоумышленников при атаках на сайты или приложения обычно следующие:</p>
5
<p>Цели злоумышленников при атаках на сайты или приложения обычно следующие:</p>
6
<ul><li>Кража персональных данных пользователей</li>
6
<ul><li>Кража персональных данных пользователей</li>
7
<li>Кража аккаунтов</li>
7
<li>Кража аккаунтов</li>
8
<li>Кража банковских данных</li>
8
<li>Кража банковских данных</li>
9
<li>Передача вирусов на компьютеры пользователей</li>
9
<li>Передача вирусов на компьютеры пользователей</li>
10
</ul><p>Чтобы преступники не достигли их, на помощь приходят специалисты, которые занимаются "этичным хакингом". Их называют пентестерами - от английского PenTester, или специалистами по проникновению. Их задача - проанализировать сайт или приложения, найти незащищенные места и определить, как этим может воспользоваться злоумышленник.</p>
10
</ul><p>Чтобы преступники не достигли их, на помощь приходят специалисты, которые занимаются "этичным хакингом". Их называют пентестерами - от английского PenTester, или специалистами по проникновению. Их задача - проанализировать сайт или приложения, найти незащищенные места и определить, как этим может воспользоваться злоумышленник.</p>
11
<p>Также предотвратить атаки могут тестировщики, хоть они и не являются специалистами по информационной безопасности. Но они могут проверить сайт на самые базовые и распространенные виды атак. Это не закроет все проблемы с безопасностью, но простые способы взлома можно исправить без привлечения специалистов.</p>
11
<p>Также предотвратить атаки могут тестировщики, хоть они и не являются специалистами по информационной безопасности. Но они могут проверить сайт на самые базовые и распространенные виды атак. Это не закроет все проблемы с безопасностью, но простые способы взлома можно исправить без привлечения специалистов.</p>
12
<p>Существует два самых распространенных типа атак:</p>
12
<p>Существует два самых распространенных типа атак:</p>
13
<ul><li>Cross-site Script (XSS)</li>
13
<ul><li>Cross-site Script (XSS)</li>
14
<li>SQL Injection</li>
14
<li>SQL Injection</li>
15
</ul><p>В примере про чат злоумышленник смог отправить под видом сообщения HTML-разметку с формой для авторизации. В этой ситуации слабым звеном оказалось окно с выводом сообщения. Разработчики не предусмотрели, что можно отправить любую HTML-разметку вместо сообщения, и она будет выведена на экране.</p>
15
</ul><p>В примере про чат злоумышленник смог отправить под видом сообщения HTML-разметку с формой для авторизации. В этой ситуации слабым звеном оказалось окно с выводом сообщения. Разработчики не предусмотрели, что можно отправить любую HTML-разметку вместо сообщения, и она будет выведена на экране.</p>
16
<p>В этом случае говорят, что злоумышленник нашел уязвимость и использовал ее.<strong>Уязвимость</strong>- это недостаток в системе, с помощью которого можно нарушить работу всей системы или отдельной ее части. Одна из таких уязвимостей связана с возможностью отправки кода через формы на сайте или в приложении. Атака, которая использует эту уязвимость, называется XSS. Разберем ее подробнее.</p>
16
<p>В этом случае говорят, что злоумышленник нашел уязвимость и использовал ее.<strong>Уязвимость</strong>- это недостаток в системе, с помощью которого можно нарушить работу всей системы или отдельной ее части. Одна из таких уязвимостей связана с возможностью отправки кода через формы на сайте или в приложении. Атака, которая использует эту уязвимость, называется XSS. Разберем ее подробнее.</p>
17
<h3>XSS</h3>
17
<h3>XSS</h3>
18
<p>Когда злоумышленник отправил вместо обычного сообщения разметку на HTML, он использовал атаку<strong>Cross-Site Scripting</strong>или<strong>XSS</strong>. Сокращение начинается с буквы "X", чтобы не было путаницы с языком стилей CSS. При XSS должен выполниться любой сторонний код, который был передан на сайт. Это может быть:</p>
18
<p>Когда злоумышленник отправил вместо обычного сообщения разметку на HTML, он использовал атаку<strong>Cross-Site Scripting</strong>или<strong>XSS</strong>. Сокращение начинается с буквы "X", чтобы не было путаницы с языком стилей CSS. При XSS должен выполниться любой сторонний код, который был передан на сайт. Это может быть:</p>
19
<ul><li>HTML-разметка</li>
19
<ul><li>HTML-разметка</li>
20
<li>JavaScript код</li>
20
<li>JavaScript код</li>
21
</ul><p>То есть код, который может выполниться в браузере любого пользователя. Такому типу атак подвержены все элементы на странице, в которые можно ввести текст, например, поля форм.</p>
21
</ul><p>То есть код, который может выполниться в браузере любого пользователя. Такому типу атак подвержены все элементы на странице, в которые можно ввести текст, например, поля форм.</p>
22
<p>Для примера создадим такой сайт и отправим код в незащищенное поле. Код - обычный JavaScript код, в котором выводится сообщение для пользователя в отдельном окне:</p>
22
<p>Для примера создадим такой сайт и отправим код в незащищенное поле. Код - обычный JavaScript код, в котором выводится сообщение для пользователя в отдельном окне:</p>
23
<p>Так выглядит страница до ввода сообщения со скриптом:</p>
23
<p>Так выглядит страница до ввода сообщения со скриптом:</p>
24
<p>При вводе сообщения со скриптом браузеры всех пользователей автоматически выполнят скрипт, так как в чате нет защиты от XSS:</p>
24
<p>При вводе сообщения со скриптом браузеры всех пользователей автоматически выполнят скрипт, так как в чате нет защиты от XSS:</p>
25
<p>Это происходит, потому что браузер обрабатывает все символы в сообщении, в том числе и служебные, такие как <, >. Чтобы безопасно вывести сообщение и не выполнить код, используется замена символов на мнемоники.</p>
25
<p>Это происходит, потому что браузер обрабатывает все символы в сообщении, в том числе и служебные, такие как <, >. Чтобы безопасно вывести сообщение и не выполнить код, используется замена символов на мнемоники.</p>
26
<p><strong>Мнемоники</strong>- специальные символы, которые браузер не обрабатывает как код. Такой процесс называется экранированием символов и повсеместно используется в программировании.</p>
26
<p><strong>Мнемоники</strong>- специальные символы, которые браузер не обрабатывает как код. Такой процесс называется экранированием символов и повсеместно используется в программировании.</p>
27
<p>В примере выше, чтобы защититься от выполнения кода, стоит заменить все символы < на мнемонику \&lt;, а символы > на \&gt;. Браузеры не умеют обрабатывать такой текст как код, но для пользователя все символы вернутся в исходное состояние.</p>
27
<p>В примере выше, чтобы защититься от выполнения кода, стоит заменить все символы < на мнемонику \&lt;, а символы > на \&gt;. Браузеры не умеют обрабатывать такой текст как код, но для пользователя все символы вернутся в исходное состояние.</p>
28
<p>Для тестирования XSS используются два способа:</p>
28
<p>Для тестирования XSS используются два способа:</p>
29
<ol><li>Если переданная строка в форме где-то отображается после отправки, то возможно отправить любой HTML-тег с текстом. Например, <h1>Hello</h1></li>
29
<ol><li>Если переданная строка в форме где-то отображается после отправки, то возможно отправить любой HTML-тег с текстом. Например, <h1>Hello</h1></li>
30
<li>Вместо HTML воспользуйтесь кодом на JavaScript, как в примере выше. Действие функции alert() будет заметно сразу</li>
30
<li>Вместо HTML воспользуйтесь кодом на JavaScript, как в примере выше. Действие функции alert() будет заметно сразу</li>
31
</ol><p>Необходимо взять примеры из этого урока и вставить их в поля формы тестируемого сайта. Будет нагляднее, если результат выводится сразу, например, как у формы комментариев. Также нужно представить себя злоумышленником, который ищет уязвимость в проекте.</p>
31
</ol><p>Необходимо взять примеры из этого урока и вставить их в поля формы тестируемого сайта. Будет нагляднее, если результат выводится сразу, например, как у формы комментариев. Также нужно представить себя злоумышленником, который ищет уязвимость в проекте.</p>
32
<p>Если ни один из способов не сработал, значит, простыми способами атаку не использовать. Это не означает, что уязвимостей нет, но так отсекаются самые распространенные способы, которыми любят пользоваться начинающие хакеры.</p>
32
<p>Если ни один из способов не сработал, значит, простыми способами атаку не использовать. Это не означает, что уязвимостей нет, но так отсекаются самые распространенные способы, которыми любят пользоваться начинающие хакеры.</p>
33
<p>Чтобы проверить сайт на XSS, необходимо проанализировать все поля, в которых пользователь может оставлять текст. В большинстве случаев это происходит в формах, поэтому проверка на XSS происходит во время тестирования форм.</p>
33
<p>Чтобы проверить сайт на XSS, необходимо проанализировать все поля, в которых пользователь может оставлять текст. В большинстве случаев это происходит в формах, поэтому проверка на XSS происходит во время тестирования форм.</p>
34
<p>При использовании XSS атака происходит на пользователей, а не на сам сайт и его внутреннюю структуру. В противовес такому подходу используют атаку под названием SQL Injection. Она направлена на базу данных сайта.</p>
34
<p>При использовании XSS атака происходит на пользователей, а не на сам сайт и его внутреннюю структуру. В противовес такому подходу используют атаку под названием SQL Injection. Она направлена на базу данных сайта.</p>
35
<h3>Выводы</h3>
35
<h3>Выводы</h3>
36
<p>В этом уроке мы базово рассмотрели тему информационной безопасности и простых атак на веб-приложения. Так как тема безопасности большая для одного урока, то мы остановились на одной из простых в исполнении атаки - Cross-site Script.</p>
36
<p>В этом уроке мы базово рассмотрели тему информационной безопасности и простых атак на веб-приложения. Так как тема безопасности большая для одного урока, то мы остановились на одной из простых в исполнении атаки - Cross-site Script.</p>
37
<p>XSS простая, но ее последствия не настолько безобидны. С помощью XSS можно получить данные о пользователе или подсунуть ему поддельную форму регистрации.</p>
37
<p>XSS простая, но ее последствия не настолько безобидны. С помощью XSS можно получить данные о пользователе или подсунуть ему поддельную форму регистрации.</p>
38
<p>Суть уязвимости состоит в том, что не обрабатываются поля формы, поиска, комментариев. Если разработчики не экранируют символы в таких полях, то появится возможность отправить и выполнить вредоносный код на сайте или в приложении</p>
38
<p>Суть уязвимости состоит в том, что не обрабатываются поля формы, поиска, комментариев. Если разработчики не экранируют символы в таких полях, то появится возможность отправить и выполнить вредоносный код на сайте или в приложении</p>
39
<p>С опытом вы сможете тестировать большое количество разных атак и дополнительно защищать приложение от злоумышленников.</p>
39
<p>С опытом вы сможете тестировать большое количество разных атак и дополнительно защищать приложение от злоумышленников.</p>