我正在写一个Spring Java程序访问来自雅典娜的数据,但我发现雅典娜JDBC驱动程序不支持PreparedStatement,有谁知道如何避免在雅典娜上注入SQL?
发布于 2018-06-13 04:59:59
在准备查询之前,必须将SQL查询格式化为字符串,并通过字符串连接包括变量。
换句话说,欢迎学习PHP编程2005年左右!:-(
这使您和您的应用程序代码有责任确保变量的安全,并且不会导致SQL注入漏洞。
例如,在将变量内插到SQL中之前,可以将变量强制转换为数值数据类型。
或者,当可以声明一组有限的可能允许的值时,您可以创建一个allowlist。如果您接受输入,请对照白名单进行检查。如果输入不在allowlist中,请不要将其用作SQL语句的一部分。
我建议您向AWS Athena项目提供反馈,并询问他们何时在其JDBC驱动程序中提供对SQL查询参数的支持。通过Athena-feedback@amazon.com向他们发送电子邮件
另请参阅此相关问题:AWS Athena JDBC PreparedStatement
发布于 2021-10-18 18:54:06
雅典娜现在支持prepared statements (当这个问题被问到时,情况并非如此)。
话虽如此,预准备语句并不是在雅典娜中防范SQL注入攻击的唯一方法,而且SQL注入攻击也不像在数据库中那样严重。
DROP TABLE foo
偷偷放入语句中。https://stackoverflow.com/questions/50823715
复制相似问题