#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. Вам нужны реальные данные. Экранирование зависит от того, как данные отображаются или сериализуются.