Aks*_*hay 40 orm jpa sql-injection jpql
我正在使用Java EE 6和JSF-2.0构建Java Web应用程序,使用持久性API进行所有数据库操作.
后端是MySQL,但是我在EJB-QL中使用了EntityManager函数和命名查询来进行所有操作.在这种情况下,SQL注入攻击是否可行?
Bal*_*usC 42
只有当你在SQL/JPQL字符串中内联用户控制的变量时才有可能:
String sql = "SELECT u FROM User u WHERE id=" + id;
Run Code Online (Sandbox Code Playgroud)
如果您没有这样做并且仅使用参数化/命名查询,那么您就是安全的.
如果您的JPA提供程序处理所有输入参数以处理注入攻击,那么您应该被覆盖.我们在EclipseLink中做得很好.
正如之前的海报提到的拼凑你自己的JPQL或SQL(对于本机查询)可能会暴露你.
我建议使用带有参数的命名查询而不是连接字符串来构建JPQL/SQL.
道格