Как предотвратить инъекции SQL при использовании Morphia с Java Java?

Я использую MongoDB с Morphia Object Document Mapper в Java EE.

@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-инъекций? Если да, то, пожалуйста, дайте мне предложение или пример для профилактики.

1 ответ

Решение

Я не скажу, что вероятность такой атаки равна 0, потому что хакеры умные, решительные типы, но я скажу, что вам не нужно слишком беспокоиться об этом и что за все мои годы работы с MongoDB и для него я Я никогда не слышал о такой атаке.

Атаки SQL-инъекции работают, частично, за счет того, что SQL-запросы анализируются и оцениваются на стороне сервера. Монго запросы поступают на сервер уже в Document формат. Запросы MongoDB не поддерживают комментарии так же, как SQL, и поэтому вектор атаки недоступен. Поскольку запросы уже имеют четко определенный, структурированный формат и не анализируются на сервере, выполнить подобную атаку намного сложнее.

Другие вопросы по тегам