我想使用Java Play Framework编写RESTful后端。我之前只使用过PHP语言和Android开发。
所以我想知道Play Framework可能是典型的PHP SQL注入吗?如果是,如何防御他们?
答案 0 :(得分:5)
每一段代码都可以做错或做错,如果你足够顽固,你就可以让孩子通过参数来攻击你......即使是玩游戏。
另一方面,Play(特别是版本2.x)为类型安全付出了巨大的努力,这意味着在路由级别你可以防止最简单的攻击,即你每次都在url中声明类型的params,这意味着你不要当你在路由时将它声明为整数时,需要在PHP if(intval($_GET['param'])>0)
中进行检查。播放只是不会识别这个地方的字符串路径。样品:
GET /find-user/:id controllers.Users.find(id: Int)
需要http://domain.tld/find-user/123
这样的链接,简单的注入方法http://domain.tld/find-user/123 AND 1==1
会给你... 404页面(默认情况下路由未找到,因为你需要自己处理404) 。
使用ie with Ebean时更是如此 - 通常即使您手动构建查询 ,也可以使用参数化占位符来提高安全性。上次我在我们的项目中进行了一项调查,虽然我不是超级黑客......但是我甚至无法将SQL注入到使用Ebean API编写的基本查询中。
最后,如果您使用原始mysql_query("SELECT ...
直到现在并且学会了如何防止使用Play进行注射,那么您可能会忘记额外的努力,只需保持睁眼,您就会安全。
答案 1 :(得分:4)