Ibatis 和 Fotify 的 SqlIjection 问题
我有一个问题。首先我有这个代码:
更新 $表$ 放 展开 = #展开# 在哪里 名称=#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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不了解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.