Распространенные проблемы с безопасностью переднего плана и решения

Безопасность

1.XSS

XSS (межсайтовый скриптинг) — наиболее распространенная проблема безопасности внешнего интерфейса. XSS — это уязвимость компьютерной безопасности в веб-приложениях, которая позволяет злоумышленникам внедрять код на страницы, предоставляемые другим пользователям.Злоумышленник вводит незаконные HTML-теги или код javascript, чтобы, когда пользователь просматривает веб-страницу, контролировал браузер пользователя.

категория

1. Тип DOM xss

Используйте недостатки в самом DOM для атаки.
В следующем коде изображение на странице получает путь. Среди них возвращенные {{img.src}}='/xxx' onerror='/xxx', тег img становится<img src="/xxx" onerror=xxx">. src точно не загрузится, и тогда для достижения эффекта атаки будет выполнен внедренный в onerror вредоносный код.

<img src="{{img.src}}">

2. Светоотражающий xss

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

http://www.abc.com?data=xxx

3. Сохранено xss

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

решение

1. Фильтр.

Отфильтруйте ввод пользователя, добавив<> '' ""Экранируйте такие символы, удалите узел Style, узел Script и узел Iframe, введенные пользователем.

function filterXss(str){
    var s = "";
    if(str.length == 0) return "";
    s = str.replace(/&/g,"&amp;");
    s = s.replace(/</g,"&lt;");
    s = s.replace(/>/g,"&gt;");
    s = s.replace(/ /g,"&nbsp;");
    s = s.replace(/\'/g,"&#39;");
    s = s.replace(/\"/g,"&quot;");
    return s; 
}

2. Кодирование

Соответствующее кодирование выполняется в соответствии с контекстом, в котором находятся выходные данные. Данные размещаются в элементах HTML и должны быть закодированы в формате HTML, а также размещены в URL-адресах, требуется кодирование URL-адресов. Кроме того, существует кодировка JavaScript, кодировка CSS, кодировка атрибутов HTML, кодировка JSON и многое другое.

3.httpOnly

Установите атрибут HttpOnly в файле cookie, чтобы сценарий js не мог прочитать информацию файла cookie.

2.CSRF

Полное название CSRF (подделка межсайтовых запросов) — подделка межсайтовых запросов. Относится к злоумышленнику, притворяющемуся пользователем, чтобы инициировать запрос (без ведома пользователя) и выполнить что-то против воли пользователя. Процесс атаки показан на следующем рисунке:

решение

1. Используйте токен

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

2. Проверка реферата

Специализация относится к источнику страницы, что означает, что только запрос принимается, сервер ответит; если нет, это перехватят.

3. Используйте код подтверждения

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

3. Кликджекинг

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

решение

1. Установите заголовок ответа HTTP X-Frame-Options

Заголовок ответа HTTP X-Frame-Options используется, чтобы указать браузеру, разрешена ли страница или нет.<frame>, <iframe>или<object>знак показан в . Веб-сайты могут использовать эту функцию, чтобы убедиться, что их собственный контент не встроен в чужой веб-сайт.

2. Используйте политику безопасности содержимого CSP (Content Security Policy).

4. Небезопасные сторонние зависимости

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

решение

1. Минимизируйте сторонние зависимости и используйте относительно зрелые пакеты зависимостей.

2. Используйте автоматизированные инструменты, чтобы проверить, есть ли у этих сторонних кодов проблемы с безопасностью, такие как NSP (платформа безопасности узла), Snyk и т. д.

5. Взлом данных локального хранилища

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

решение

1. Не хранить важные данные локально

Конфиденциальная информация не должна храниться локально.

2. Шифрование

Вся информация в файле cookie или информация в localStorage должна быть зашифрована.Для шифрования вы можете определить некоторые методы шифрования самостоятельно или найти некоторые зашифрованные плагины в Интернете, или использовать base64 для многократного шифрования, а затем многократного декодирования.