English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 (во время отправки письма замените # на @), и предоставьте соответствующие доказательства. Если будет установлено, что содержимое нарушает авторские права, сайт немедленно удаляет спорное содержимое.