Jena SelectBuilder是否阻止sparql注入?
我们试图在应用程序中防止sparql注入攻击。为了生成sparql查询,我们使用了ApacheJean查询生成器类(org.apache.jena.arq.querybuilder)。 这足以防止注射攻击吗 我们尝试注入多个三元组而不是文本,查询不会返回任何数据。那么这是否意味着查询生成器类会阻止注入Jena SelectBuilder是否阻止sparql注入?,jena,Jena,我们试图在应用程序中防止sparql注入攻击。为了生成sparql查询,我们使用了ApacheJean查询生成器类(org.apache.jena.arq.querybuilder)。 这足以防止注射攻击吗 我们尝试注入多个三元组而不是文本,查询不会返回任何数据。那么这是否意味着查询生成器类会阻止注入 String username="admin\". ?subject ?p ?o . ?subject <urn:publicid:property;name> \"admin";
String username="admin\". ?subject ?p ?o . ?subject <urn:publicid:property;name> \"admin";
SelectBuilder sb = new SelectBuilder().addVar( "*" ).addWhere( "?s", RDF.type, Namespace.USER_META_TYPE )
.addWhere( "?s", Namespace.USER_NAME, username );
String username=“admin\”?主题?p?o?主题\“管理”;
SelectBuilder sb=new SelectBuilder().addVar(“*”).addWhere(“?s”,RDF.type,Namespace.USER\u META\u type)
.addWhere(“?s”,Namespace.USER\u名称,用户名);
我希望结果集应该是空的,因为发生了同样的事情。addWhere(s,p,o)方法检查每个对象(s,p,o)的类型。对于字符串,它调用org.apache.jena.sparql.util.NodeFactoryExtra
方法公共静态节点parseNode(字符串nodeString,PrefixMap pmap)
方法。这意味着
- 以“开头”转换为URI
- 以“\”开头的节点将转换为匿名节点
- 以“或”开头是字符串
- 以“?”开头的节点转换为变量类型节点
- 仅包含数字和“.”将转换为数字文字节点类型
- 格式为prefix:localName,其中prefix位于前缀映射中,localName是有效的localName,则会转换为URI
- 所有其他值都作为字符串返回