【问题标题】:Is a Google App Engine app susceptible to SQL injection attacks?Google App Engine 应用程序是否容易受到 SQL 注入攻击?
【发布时间】:2011-09-07 11:02:29
【问题描述】:

由于 App Engine 实际上并不使用 SQL,这是否意味着 App Engine 应用可以免受 SQL 注入攻击?

【问题讨论】:

  • 如果您可以明确指出 App Engine 不会在任何地方(直接通过前端或后端某处)使用 SQL,那么它就不会受到此类攻击。否则,谁知道呢。
  • 你指的是Datastore吗?

标签: sql security google-app-engine sql-injection


【解决方案1】:

是的,只要您按照将用户输入与 GQL 字符串连接的方式进行操作,它们都同样容易受到注入攻击。

但是,如果您遵循 Google 的最佳实践建议,即在 GQL 字符串中输入值时使用参数,那么您应该可以使用 GQL。所以而不是:

query = GqlQuery("SELECT * FROM Song WHERE composer = 'Lennon, John'")

你可以使用:

query = GqlQuery("SELECT * FROM Song WHERE composer = :1", "Lennon, John")

或:

query = GqlQuery("SELECT * FROM Song WHERE composer = :composer", composer="Lennon, John")

此外,您可以通过使用Query class 生成查询来完全避免这个问题。

【讨论】:

    【解决方案2】:

    根据定义,没有 SQL==没有 SQL 注入。 :-)

    但是如果应用程序使用 GQL 并且天真地将字符串文字值粘贴到查询中而不转义,那么您当然可以进行 GQL 注入。这样做造成的损害比某些 SQL 变体要少,这些变体让您;-终止当前查询并在同一字符串中开始一个新查询,但它仍然具有潜在的危险。

    GQLQuery provides 不过是一个简单的内置参数绑定机制(不像某些语言的默认库...)。所以真的没有任何借口继续将字符串文字填充到查询字符串中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 2015-10-03
      • 2019-08-10
      • 2010-11-28
      • 2021-12-04
      相关资源
      最近更新 更多