grails - 如何在 Grails 应用程序中防范 XSS 攻击

标签 grails xss grails-orm

在我的 Grails 应用程序中,我从 params 中提取文本,并将其用作我的域查询中的参数:

示例:

def color = Colors.findByName(params.colorname)

我想象有人可能会修改 params.colorname 参数来对我的 mysql 数据库运行错误查询。

有哪些好的做法可以防止此类事件的发生?

最佳答案

当您在 View 中呈现可能包含 XSS 攻击的字段时,您需要将其编码为 HTML。您应该对包含用户输入的所有字段进行编码。所有标准 Grails 标记都编码为 HTML。如果您使用${}但从某种角度来看,这就是你可能遇到麻烦的地方。您需要手动对其进行编码,如 ${colorname.encodeAsHTML()}或使用类似 fieldValue 的标签如果它是一个 bean 属性。

您还可以使用 grails.views.default.codec = "html" 设置全局默认编解码器在Config.groovy .

注意双重编码,并确保在自定义标记中编码为 HTML。

您还引用了 SQL 注入(inject)攻击,这与 XSS 攻击不同。仅当您编写自己的 SQL 或 HQL 并直接将用户输入插入 SQL/HQL 时,您才会面临 SQL 注入(inject)的风险。这意味着做 Colors.executeQuery("from Colors where name like ?", params.colorname)而不是Colors.executeQuery("from Colors where name like $params.colorname") .

关于grails - 如何在 Grails 应用程序中防范 XSS 攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15144905/

相关文章:

grails - Grails 3.3:Rending插件2.0.3:UnknownTemplateException在生产中找不到 'template'的模板

tomcat - support.PluginAwareResourceBundleMessageSource 无法解析插件的任何资源

javascript - Veracode 报告 XMLHttpResponse Javascript 中的 XSS 问题

spring - 无法在 Grails 3 中动态配置支持 GORM 的数据源

grails - Grails formRemote:将真实网址指定为参数

java - tomcat 8.0.32 - 生产服务器中 Server.xml 配置中的性能调整

actionscript-3 - 使用来自 Flash/AS3 的 Google Analytics Measurement Protocol/Universal Analytics

html - 清理 <script> 元素内容

oracle - 甚至 id 值。棘手的序列映射(grails oracle)

hibernate - Grails GORM 多对多关系和可连接条目的删除