Когда вы визуализируете поле в своем представлении, которое потенциально может содержать атаку XSS, вам необходимо закодировать его как HTML. Вы должны сделать все поля, содержащие ввод пользователя, закодированы. Все стандартные теги Grails кодируются как HTML. Если вы используете ${}
, вы можете столкнуться с проблемой. Вам нужно либо вручную закодировать его, как ${colorname.encodeAsHTML()}
, либо использовать тег типа fieldValue
, если это свойство bean.
Вы также можете установить глобальный кодек по умолчанию с grails.views.default.codec = "html"
в Config.groovy
.
Следите за двойным кодированием и убедитесь, что вы кодируете как HTML в свои собственные теги.
Вы также ссылаетесь на атаки SQL-инъекций, которые отличаются от атак XSS. Вы рискуете только инъекцией SQL, если вы пишете собственный SQL или HQL и напрямую интерполируете ввод пользователя в SQL/HQL. Это означает, что Colors.executeQuery("from Colors where name like ?", params.colorname)
вместо Colors.executeQuery("from Colors where name like $params.colorname")
.
Я считаю, что вы думаете о [SQL injection] (http://en.wikipedia.org/wiki/Sql_injection), а не [XSS] (http://en.wikipedia.org/wiki/Cross-site_scripting) ? – hsan
Плагин очистки Html может помочь предотвратить дезинфекцию пользователя. Http://nimavat.me/blog/sanitize-user-input-with-html-cleaner-plugin –