Экранирующие символы XSS перед переносом данных в java. JSTL

#java #jsp #jstl

#java #jsp #jstl

Вопрос:

Я знаю, как экранировать XSS при отображении данных, но как я могу экранировать его перед переносом? Есть ли способ, которым я могу экранировать данные, которые вводятся пользователем, перед переносом кода в java? Или это невозможно, и я должен сделать это в коде Java?

Код:

 <body>
    <input type="text" name="name" value=<c:out value="Name"/>>
    <input type="text" name="surname" value=<c:out value="Surname"/>>
    <input type="submit" name="continue" value="Continue">
</body>
  

Не работает, и, я думаю, это имеет смысл, потому что оно экранирует «Name», а не то, что пользователь поместил в него. Итак, могу ли я экранировать это раньше или мне нужно сделать это позже в коде Java?

Ответ №1:

Вы не хотите экранировать то, что вводит пользователь. Это реальные данные.

При отображении этих данных в HTML-документе они должны быть экранированы в формате HTML. Но если вы измените способ работы вашего приложения и решите сериализовать данные в JSON, тогда им не нужно будет экранировать HTML, но нужно будет экранировать JSON. А при отображении данных в консоли их вообще не нужно экранировать.

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