是否可以在Play Framework中调用SQL注入?

bvi*_*iyg 2 sql-injection playframework

我想使用Java Play Framework编写RESTful后端.我之前只使用过PHP语言和Android开发.

所以我想知道Play Framework可能是典型的PHP SQL注入吗?如果是,如何防御他们?

bie*_*ior 5

每一段代码都可以做错或做错,如果你足够顽固,你就可以让孩子们通过params攻击你......即使是Play.

另一方面,Play(特别是版本2.x)为类型安全付出了巨大的努力,这意味着在路由级别你可以防止最简单的攻击,即你在url中声明每次类型的params,这意味着你不需要if(intval($_GET['param'])>0)在路由时将其声明为整数,以便在PHP中进行检查.播放只是不会识别这个地方的字符串路径.样品:

GET  /find-user/:id   controllers.Users.find(id: Int)
Run Code Online (Sandbox Code Playgroud)

需要链接http://domain.tld/find-user/123和简单的注入方法http://domain.tld/find-user/123 AND 1==1将给你... 404页面(实际上默认找不到路由,因为你需要自己处理404).

使用ie with Ebean时更是如此 - 通常即使您手动构建查询,也可以使用参数化占位符来提高安全性.上次我在我们的项目中进行了一项调查,虽然我不是超级黑客......但是我甚至无法将SQL注入到使用Ebean API编写的基本查询中.

最后,如果你正在使用raw mysql_query("SELECT ...直到现在并且学会了如何防止使用Play进行注射,那么你很可能会忘记额外的努力,只要保持睁眼,你就会安全.