English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Что такое атака инъекции JavaScript?

Javascript может быть инструментом хакеров для атак на веб-сайты, где инъекция js (javascript) вредоносных скриптов — это одно из средств. 那么, давайте узнаем, как предотвратить атаку JavaScript-инъекцией? Вот неплохое заявление, которое я хочу с вами поделиться:

Что такое атака JavaScript-инъекцией?
Каждый раз, когда веб-сайт принимает ввод пользователя и заново отображает этот контент, он легко становится уязвимым для атак JavaScript-инъекцией. Давайте рассмотрим конкретное приложение, которое легко становится уязвимым для атак JavaScript-инъекцией. Предположим, что был создан веб-сайт обратной связи. Клиенты могут访问 веб-сайт и вводить информацию о продуктах. Когда клиент отправляет обратную связь, информация о反馈 снова отображается на странице обратной связи.

Веб-сайт обратной связи — это простой веб-сайт. К сожалению, этот веб-сайт легко подвержен атакам JavaScript-инъекцией.

Предположим, что вы вводите следующий текст в форму обратной связи клиентов:

<script>alert(“Boo!”)</script>

Этот текст представляет собой скрипт JavaScript, который показывает диалоговое окно с сообщением об ошибке. В том случае, если кто-то подаст этот скрипт в форму обратной связи клиентов, сообщение Boo! будет отображаться в будущем, когда любой человек будет访问 веб-сайт обратной связи. Вы, возможно, также думаете, что другие не будут использовать атаку JavaScript-инъекцией для причинения вреда.

Теперь, возможно, ваша первая реакция на атаку JavaScript-инъекцией может быть не обращать внимания. Вы, возможно, думаете, что атака JavaScript-инъекцией — это просто безобидное явление, но, к сожалению, хакеры могут использовать JavaScript-инъекции для нанесения вреда веб-сайтам. Использование атак JavaScript-инъекцией позволяет выполнять跨сайтовые脚本ные атаки (XSS). В атаках XSS можно шпионить за конфиденциальной информацией пользователей и отправлять информацию на другой веб-сайт.

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

Пожалуйста, относитесь к этому с особой серьезностью. Остерегайтесь атак с использованием JavaScript-инъекций и защищайте конфиденциальную информацию пользователей. В следующих двух частях мы будем обсуждать два метода предотвращения атак с использованием JavaScript-инъекций в приложениях ASP.NET MVC. 

Метод 1:Кодирование в HTML в представлении 

Простым способом предотвратить注入 JavaScript-скриптов является повторное кодирование в HTML любого ввода пользователя на странице

например: <%=Html.Encode(feedback.Message)%>

Что означает кодирование строки с помощью HTML? При кодировании строки с помощью HTML опасные символы, такие как < и >, заменяются HTML-символами, такими как < и >. Поэтому, когда строка <script>alert(“Boo!”)</script> кодируется с помощью HTML, она преобразуется в <script>alert(“Boo!”)</script>. Браузер больше не выполняет скрипты JavaScript при разборе закодированной строки, а вместо этого показывает безвредную страницу

Метод 2:Кодирование в HTML перед записью в базу данных
Кроме того, данные можно закодировать в HTML, когда они отображаются на странице, а также перед тем, как они будут отправлены в базу данных. Второй метод именно тот, который описан в контрольере в списке кода 4.

например:

public ActionResult Create(string message)
{
// Добавить отзыв
var newFeedback = new Feedback();
newFeedback.Message = Server.HtmlEncode(message);
newFeedback.EntryDate = DateTime.Now;
db.Feedbacks.InsertOnSubmit(newFeedback);
db.SubmitChanges(); 
// Redirect
return RedirectToAction("Index");
}

Обратите внимание, что значение Message до передачи в базу данных кодируется HTML в операциях Create(). При повторном отображении Message в視е, Message кодируется HTML и поэтому не выполняет никакого JavaScript, внедренного в Message.

Обобщение

Обычно, люди предпочитают использовать первый метод, обсуждаемый в этом руководстве, а не второй метод. Проблема второго метода заключается в том, что в базе данных в конечном итоге сохраняются данные HTML кодирования.换言之, данные в базе данных будут содержать странные символы. Что это за зло? Если нужно отображать данные базы данных в виде, отличном от веб-страницы, могут возникнуть проблемы. Например, данные не могут быть легко отображены в приложениях Windows Forms.

Вот и все, что есть в этой статье, надеюсь, это поможет вам в изучении. Также希望大家多多支持呐喊教程。

Заявление: содержимое этой статьи взято из Интернета, авторские права принадлежат соответствующему автору. Контент был предоставлен пользователями Интернета, сайт не имеет права собственности на него, не underwent редактирование и не несет ответственности за юридические последствия. Если вы обнаружите спорное содержимое, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма замените # на @), и предоставьте соответствующие доказательства. Если будет установлено, что содержимое нарушает авторские права, сайт немедленно удаляет спорное содержимое.

Рекомендуем к просмотру