我正在编写一个访问Athena数据的Spring Java程序,但是我发现Athena JDBC驱动程序不支持PreparedStatement,有没有人知道如何避免在Athena上注入SQL?
答案 0 :(得分:6)
在准备查询之前,您必须将SQL查询格式化为字符串,并通过字符串连接包含变量。
换句话说,欢迎大约2005年的PHP编程! :-(
这将对您和您的应用程序代码负责,以确保变量是安全的,并且不会导致SQL注入漏洞。
例如,您可以在将变量插入SQL之前将变量转换为数值数据类型。
或者,当可以声明可能允许的有限值集时,您可以创建白名单。如果您接受输入,请根据白名单进行检查。如果输入不在白名单中,请不要将其用作SQL语句的一部分。
我建议您向AWS Athena项目提供反馈,并询问他们何时在其JDBC驱动程序中提供对SQL查询参数的支持。通过 Athena-feedback@amazon.com
向他们发送电子邮件另请参阅此相关问题:AWS Athena JDBC PreparedStatement