【发布时间】:2019-11-11 22:46:11
【问题描述】:
标题说明了一切。有没有相当于 SQL 的预处理语句的东西?
【问题讨论】:
-
不是这样的。有一些引擎,比如我雇主的Virtuoso,为只读、读写等提供不同特权的端点,这些特权可能因用户而异。 Virtuoso 还支持 SPARQL-in-SQL,因此您可以在 SQL 中进行所有查询,这使您可以在客户端工具中使用准备好的语句,该工具可以通过 ODBC、JDBC、dotNET 等进行连接......复杂的答案,但它一个复杂的谜题!
-
在 Apache Jena
ParameterizedSparqlString和QueryBuilder支持这一点。但仅来自Java代码afaik。在 RDF4J 中,还有一种准备查询的方法:rdf4j.org/documentation/programming/repository/… - 我不能说是否完成了内部注入测试。 Jeen Broekstra 很可能很快就会在这里给您答案 -
(不是一个完整的解决方案)对于 SPARQL,查询和更新是不同的语言。查询(仅限)端点将只接受查询。注入查询的更新将是语法错误。
-
@AndyS 所以最坏的情况是我的服务器抛出了一些异常?
-
任意注入查询会使查询(非常、非常)缓慢。可能会发生系统异常(例如内存不足)。注入更新操作会导致 HTTP 响应为 400(错误请求)——这是一个错误的语法查询。
标签: sparql code-injection sesame