首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何为雅典娜解决SQL注入?

如何为雅典娜解决SQL注入?
EN

Stack Overflow用户
提问于 2018-06-13 02:37:25
回答 2查看 2.7K关注 0票数 10

我正在写一个Spring Java程序访问来自雅典娜的数据,但我发现雅典娜JDBC驱动程序不支持PreparedStatement,有谁知道如何避免在雅典娜上注入SQL?

EN

回答 2

Stack Overflow用户

发布于 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

票数 14
EN

Stack Overflow用户

发布于 2021-10-18 18:54:06

雅典娜现在支持prepared statements (当这个问题被问到时,情况并非如此)。

话虽如此,预准备语句并不是在雅典娜中防范SQL注入攻击的唯一方法,而且SQL注入攻击也不像在数据库中那样严重。

  • 雅典娜只是一个查询引擎,而不是一个数据库。虽然删除表可能会造成中断,但表只是元数据,数据不会随表一起删除。
  • 雅典娜的应用编程接口不允许在同一执行中有多个语句,因此在没有完全替换查询的情况下无法将DROP TABLE foo偷偷放入语句中。
  • 雅典娜在设计上没有任何删除数据的功能。雅典娜具有可以创建新数据的功能,例如CTAS,但它将拒绝写入现有位置,并且无法覆盖现有数据。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50823715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档