gpt4 book ai didi

java - JAVA中MySQL表名注入(inject)

转载 作者:行者123 更新时间:2023-11-29 09:49:10 27 4
gpt4 key购买 nike

我需要在运行时在数据库中生成表
在这种情况下,我无法使用 preparedStatement。

我试图找到一个来验证MySQL的查询或表名输入,但只找到了ESAPI只能转义我的字符串。我有自己的自定义 validator ,但我知道在这种情况下我无法确定。

我阅读了很多如何滥用 SQL 注入(inject)的示例。但通常资源会给出参数示例,而不是表名称。据我了解,如果参数位于查询末尾,这是可能的。

问题 1:您能否举例说明如何滥用这些查询?

"CREATE TABLE " + tableName + "(id int primary key)"

"DROP TABLE " + tableName

tableName - 来自客户端的输入

它对于测试我的 validator 非常有用。当我尝试这样做时,我总是遇到 SQL 语法错误。

问题 2:通常,当需要使用某些字符作为 ,' 或类似的内容时以及在编写请求后,他们通常会使用该策略。对于这种策略,需要使用空格。

是否可以将 SQL 注入(inject)粘贴到不能有空格的输入中?只有字母吗?下划线可以作为中断查询的字符吗?

更新:

在“firstname_lastname”中的下划线之前添加转义字符是否安全?

最佳答案

我建议不要这样做,但如果你必须这样做,Michael Butscher 的评论非常好。您可以使用制表符或 %00 %09 /**/ %0d %0a 取决于数据库实现。

关于java - JAVA中MySQL表名注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55132931/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com