Google App Engine应用是否容易受到SQL注入攻击?

时间:2011-06-02 23:04:47

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

由于App Engine实际上并不使用SQL,这是否意味着App Engine应用程序不受SQL注入攻击的影响?

3 个答案:

答案 0 :(得分:10)

是的,如果您按照将用户输入与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生成查询来避免此问题。

答案 1 :(得分:2)

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

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

GQLQuery provides一个简单的内置参数绑定机制(不像某些语言的默认库......)。因此,仍然没有理由将字符串文字填充到查询字符串中。

答案 2 :(得分:0)

有关应用引擎安全性的讨论,请参阅this question。通常,您应该使用参数绑定来生成任何类型的查询。