问题标签 [gstring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
1702 浏览

security - 在 Groovy/Grails 中不安全地使用用户提供的 GString:s

Groovy 中的 GString 概念非常强大(参见http://groovy.codehaus.org/Strings+and+GString)。

GStrings 让您可以执行以下操作:

我试图弄清楚使用 Groovy GString:s 是否会在代码中引入类似于 SQL 注入攻击的安全问题。

在上面的示例中,代码是由程序的作者编写的,因此 System.exit(-1) 命令的执行不能被视为安全漏洞,因为它是作者声明的意图。

假设我正在编写一个 Grails Web 应用程序,其中用户输入来自表单字段(读取 POST/GET 参数)和数据库表(使用 GORM)。让我们假设攻击者控制了作为 POST/GET 请求发送到服务器的内容和数据库中的内容。

我的应用程序中的代码如下所示:

攻击者有什么办法可以在上述情况下执行代码?为什么?为什么不?我最初的假设是 GString 的使用总是安全的。请随时证明我错了。请尽可能具体。

更新#1:为了保持讨论的重点,请忽略代码中的任何 HTML-XSS 问题,因为这个问题是关于服务器端的代码执行,而不是客户端。

更新#2:有人指出“过滤掉不需要的字符串通常是个好主意”。虽然过滤掉“潜在的坏字符”肯定可以让您避免某些类别的安全问题,但编写即使没有过滤也安全的代码会更好。您可以将其与 Java JDBC API 中 PreparedStatements 的用法进行比较——正确使用 PreparedStatements 可以保证您免受某些类型的注入攻击。过滤您的 SQL 输入可能会给您相同的结果,但使用 PreparedStatements 严格控制过滤方法恕我直言。

0 投票
5 回答
1327 浏览

python - Python中的GStrings

Groovy 有一个 GStrings 的概念。我可以这样写代码:

我可以从字符串中访问变量的值。

我怎样才能在 Python 中做到这一点?

- 谢谢

0 投票
3 回答
2726 浏览

file - 替换文件中的 GString 标签

我有一个以 xml 格式保存的 word 文档。在本文档中,有一些 GString 标记,例如 $name。

在我的 groovy 代码中,我加载 xml 文件来替换这个 GString 标记,如下所示:

但它不起作用。GString 标记不会被我的变量“名称”替换。

谁能帮助我?

谢谢

0 投票
4 回答
2804 浏览

groovy - Groovy GString 问题

我想在 groovy GString 中使用 $ 宏。当我写下这段代码

['cdata','tdata'].each { def sql = "select * from $it_1" }

我收到错误未知属性 $it_

好的,我重写它

['cdata','tdata'].each { def sql = "select * from ${it}_1" }

然后我在结果字符串中得到不需要的引号 - “select * from 'cdata'_1”

问题是我如何在 GString 中使用 $-macro 来获得“select * from cdata_1”结果字符串?

0 投票
2 回答
976 浏览

grails - 为什么 .collect() 在以下 GString 中不起作用?

这在 GSP 页面中按预期工作:

但是当添加一个收集语句时,代码会中断..

我的印象是任何有效的 Groovy 代码都可以放在 GString${ ... }中并被正确评估/扩展。我错过了什么?

0 投票
1 回答
645 浏览

groovy - How to execute functions in gstring database queries for groovy

I am hoping to use Groovy more as a functional language than I can with Java, but one area that seems to be a problem is when I call to a stored procedure, as I am passing perhaps 40 parameters in a single call, but, I also need to do some prep work, at the moment before I even call.

So, for example, I need a time stamp, so I will have something similar to (so there may be errors, but it is the concept I am going for)

It would be helpful if I could do these type of calls inside the query, as it would make more sense what is going on, since there are so many parameters in the stored procedure, so having to look around for what went into initializing ise manager can be problematic.

Is there a way to have these functions executed within the call gstring?

0 投票
1 回答
187 浏览

windows - 为什么从函数返回的 gstring 的串联是空字符串 - Groovy 1.7.4

我有以下代码:

这段代码的输出是:

我不明白为什么在第一次通话中我得到一个空字符串。有人知道为什么换行符会改变函数的输出吗?

0 投票
5 回答
416 浏览

groovy - 如何避免说“gstring”?

我正在选择 Groovy。语言很好。但我有一个非技术问题。其中一个类称为 GString。在某些情况下,它可能会产生误导。而且在办公室里提也不是很合适,尤其是身边有一些非技术女同事的时候。

我想这不足以证明用语言重命名课程是合理的。那么当我想说 GString 时,我应该如何避免说“GString”呢?

0 投票
2 回答
3846 浏览

sql - Sql.execute 中的 Groovy GString - 文本变量没有被 ' 包围并且查询失败

我有以下问题,当我将 GString 传递给 SQL.executeInsert 时,文本变量不会自动被替换,'因此插入查询失败:

如果我'自己放:

Groovy 通知我引入了一个安全漏洞,因为 Groovy 不能使用 PreparedStatement 来执行 SQL 查询。

谁能解释我如何强制 Groovy 正确评估查询主体并准备变量?

0 投票
2 回答
584 浏览

java - 动态 GString 创建不能像我预期的那样工作

我有以下代码:

我希望输出是:

但相反,我有:

我知道我可以使用以下方法实现:

我知道原因,但我想确定。