Morphia 与 java ee 一起使用时如何防止无 sql 注入?

How to prevent no sql injetion when using Morphia with java ee?

我在 Java EE 中使用 MongoDB 和 Morphia 对象文档映射器。

@Override
public void removeTrustedDevice(String username, String cookieValue) {
    MongoConnection conn = MongoConnection.getInstance();
    TrustedDeviceDao dao = new TrustedDeviceDao(conn.getDatastore());
    Query<TrustedDevice> query = dao.createQuery();
    query.and(
            query.criteria("username").equal(username),
            query.criteria("cookieValue").equal(cookieValue)
    );

    List<TrustedDevice> deviceList = query.asList();

    if (deviceList != null && !deviceList.isEmpty()) {
        dao.delete(deviceList.get(0));
    }
}

没有SQL注射的可能性吗?如果是,那么请给我建议或预防的例子。

我不会说这种攻击的可能性是 0 因为黑客是聪明、果断的类型,但我会说你不必过分担心它而且,在我与 MongoDB 合作并为 MongoDB 工作的这些年里,我从未听说过发生过这样的攻击。

SQL 注入攻击部分地利用了 SQL 查询在服务器端解析和评估这一事实。 Mongo 查询已以 Document 格式到达服务器。 MongoDB 查询不像 SQL 那样支持评论,因此攻击向量不可用。由于查询已经采用明确定义的结构化格式,并且未在服务器上进行解析,因此发起类似攻击要困难得多。