Выход из HTML в Java

Как я удостоверяюсь, что не выхожу из чего-то дважды?

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

13
задан Kyle 27 January 2010 в 17:28
поделиться

3 ответа

Полагаю, вы используете JSP.

Просто уходите только во время отображения . Там для JSTL tag идеально подходит. По умолчанию он экранирует сущности HTML. Используйте его для отображения каждого пользовательского входа, такого как URL запроса, заголовки запроса и параметры запроса.

Например,

<input type="text" name="foo" value="<c:out value="${param.foo}" />">

Эскапсидирование во время ввода не требуется. XSS не вредит ни в сыром Java-коде, ни в SQL-базах данных. С другой стороны, вы бы предпочли сохранить данные в неизмененном виде в БД, чтобы вы могли видеть, что на самом деле ввел пользователь , чтобы при необходимости можно было совершать социальные действия на почтовых пользователях.

Если вы хотите знать, что нужно экранировать во время ввода, это будет SQL инъекция . В таком случае просто используйте PreparedStatement вместо обычного Statement всякий раз, когда вы хотите сохранить любой пользовательский ввод в базу данных.

E.g.

create = connection.prepareStatement("INSERT INTO user (username, password) VALUES (?, MD5(?))");
create.setString(1, username);
create.setString(2, password);
create.executeUpdate();
18
ответ дан 1 December 2019 в 22:07
поделиться

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

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

2
ответ дан 1 December 2019 в 22:07
поделиться

Кодировать следует только html, когда Вы что-то выводите в браузер. Это предотвращает XSS-атаки. Вид экранирования, который Вы делаете, когда собираете данные из формы, перед тем, как вставить их в базу данных, это а не html кодировка. Это экранирование специальных символов БД (лучше всего делать с помощью параметризированных запросов). Целью этого является предотвращение атак SQL инъекции. Таким образом, двойной кодировки не происходит.

3
ответ дан 1 December 2019 в 22:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: