Ibatis 和 Fotify 的 SqlIjection 问题

发布于 2024-11-15 23:52:35 字数 236 浏览 2 评论 0原文

我有一个问题。首先我有这个代码:

更新 $表$ 放 展开 = #展开# 在哪里 名称=#identificativo#

我的问题是 Fortify 工具,因为它说我必须使用 # 而不是 $。 但是,如果我使用 #table# 或 #table[]# ,我的应用程序使用此 id 的点就不会启动。

I have a problem. For first I have this code:

update
$table$
set
expanded = #expanded#
where
name = #identificativo#

My problem is the Fortify tool, because, it says that I have to use # and not $.
But, if I use #table# or #table[]# , the point of my application where I use this id, doesn't start.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

囍孤女 2024-11-22 23:52:35

我不了解Fortify工具,但我知道在这种情况下它是错误的。使用 $table$ 是使用 iBATIS 修改 SQL 的可接受方法,即替换值将在生成的实际 SQL 中被替换,而不是作为参数添加。

据我所知,这是使用动态表名称的唯一方法。

编辑:刚刚检查了 Fortify 工具,发现了这个。他们担心的是SQL注入。阅读该页面以获取更多信息。

您需要做的只是确保代码作为“table”参数传入的值不是来自用户,即系统的任何用户根本无法修改表参数。

I don't know the Fortify tool, but I know that in this case it is wrong. Using $table$ is an acceptable way of modifying SQL using iBATIS, i.e. the replacement value will get replaced in the actual SQL generated rather than added as a parameter.

As far as I know this is the only way of using dynamic table names.

Edit: Just checked the Fortify tool and found this. What they are worried about is SQL injection. Read the page for more information.

What you need to do is just make sure that the value that is getting passed in by the code as the "table" parameter does not come from the user, i.e. any user of the system would not be able to modify the table parameter at all.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文