Я предполагаю, что вы используете JSP.
Просто сбежать во время отображения только. Там для тега JSTL <c:out>
отлично подходит. По умолчанию он экранирует сущности HTML. Используйте его для отображения каждого пользовательского ввода, такого как URL запроса, заголовки запроса и параметры запроса.
* 1014 Е.Г. *
<input type="text" name="foo" value="<c:out value="${param.foo}" />">
Экранирование во время ввода не требуется. XSS не наносит вреда ни в исходном коде Java, ни в базах данных SQL. С другой стороны, вы также предпочли бы сохранить данные без изменений в БД, чтобы вы могли по-прежнему видеть, что пользователь на самом деле ввел, чтобы вы могли при необходимости выполнять социальные действия с вредоносными пользователями.
Если вы хотите знать, что следует избегать во время ввода, это будет SQL-инъекция . В таком случае просто используйте PreparedStatement
вместо обычного Statement
всякий раз, когда вы хотите сохранить любой контролируемый пользователем ввод в базу данных.
1033 * Е.Г. *
create = connection.prepareStatement("INSERT INTO user (username, password) VALUES (?, MD5(?))");
create.setString(1, username);
create.setString(2, password);
create.executeUpdate();