Данный
class MyPOJO {
@XssSanitized()
String name
}
@Retention(RetentionPolicy.RUNTIME)
@interface XssSanitized {
}
import org.aspectj.lang.annotation.Aspect
@Aspect
@Slf4j
@Component
class XssSanitizedAspect {
@Around("@within(com.es.phoenix.services.security.XssSanitized))")
void sanitize(){
//capture the value of the annotated String
//make an arbritary change to the string
//return modified string or otherwise overwrite the property
log.info("XssSanitizedAspect is working!!!!")
}
}
Можно ли изменить свойство myPOJOObject.name
внутри XssSanitizedAspect
?
На самом деле мне нужен способ очистки XSS String
свойств. Я попытался создать собственный десериализатор Jackson. Это сработало, но я не могу вставить переключатель функций (без обходного пути, который ломает все контракты с пользовательским интерфейсом), так что это решение меня не устроило.
Я просмотрел множество примеров в Интернете. Я не нашел примера, где значение аннотированного свойства было напрямую изменено таким образом.
org.aspectj.lang.annotation.Aspect
. Модифицированный вопрос. Рассмотрю ваше предложение. - person P.Brian.Mackey   schedule 05.10.2017@Around("set(@XssSanitized * * )")
должно вас заинтересовать. но я не могу проверить это в данный момент. Я основываю это предположение на документах: eclipse. org/aspectj/doc/released/adk15notebook/ - person endriu_l   schedule 05.10.2017In reality, I need a way to XSS sanitize String properties.
. И пример кода показывает шаблон того, что нужно сделать, чтобы добиться этого. - person P.Brian.Mackey   schedule 07.10.2017name
дляmyPOJOObject
так же, как и для обычного класса, если это позволяют правила доступа (или вы можете сделать свой аспект привилегированным, чтобы обойти это ограничение). Но я считаю, что это не тот ответ, который вы ищете. Я думаю, вы ищете что-то другое, и вы должны уточнить это, изменив исходный пост. - person Nándor Előd Fekete   schedule 07.10.2017