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

Tyr*_*one 7 sql security google-app-engine sql-injection

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

yyd*_*ydl 10

是的,如果您按照用户输入与GQL字符串连接的方式执行操作,它们都同样容易受到注入攻击.

但是,如果您遵循Google在GQL字符串中输入值时使用参数的最佳做法建议,那么您应该使用GQL.所以代替:

query = GqlQuery("SELECT * FROM Song WHERE composer = 'Lennon, John'")
Run Code Online (Sandbox Code Playgroud)

您可以使用:

query = GqlQuery("SELECT * FROM Song WHERE composer = :1", "Lennon, John")
Run Code Online (Sandbox Code Playgroud)

要么:

query = GqlQuery("SELECT * FROM Song WHERE composer = :composer", composer="Lennon, John")
Run Code Online (Sandbox Code Playgroud)

此外,您将完全通过使用Query类生成查询来避免此问题.


bob*_*nce 2

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

\n\n

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

\n\n

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

\n