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 那样支持评论,因此攻击向量不可用。由于查询已经采用明确定义的结构化格式,并且未在服务器上进行解析,因此发起类似攻击要困难得多。
我在 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 那样支持评论,因此攻击向量不可用。由于查询已经采用明确定义的结构化格式,并且未在服务器上进行解析,因此发起类似攻击要困难得多。