Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 转义输入以插入XQuery字符串_Php_Escaping_Xquery_Basex - Fatal编程技术网

Php 转义输入以插入XQuery字符串

Php 转义输入以插入XQuery字符串,php,escaping,xquery,basex,Php,Escaping,Xquery,Basex,假设我有以下代码: let $search := "placeholder" ... ...functx:get-matches-and-non-matches($t,$search)... 该代码像这样存储在一个文件中,通过PHP加载到字符串中,占位符被用户输入替换,然后执行代码 显然,“需要以某种方式转义 在用户输入安全之前,是否还有其他东西需要转义或删除 到目前为止,我发现我需要用"替换”用于工作,在这个过程中还发现\实际上需要&92\在这里(或者\\\\,这使得它在php

假设我有以下代码:

let $search := "placeholder"
...
...functx:get-matches-and-non-matches($t,$search)...
该代码像这样存储在一个文件中,通过PHP加载到字符串中,
占位符
被用户输入替换,然后执行代码

显然,
需要以某种方式转义

在用户输入安全之前,是否还有其他东西需要转义或删除


到目前为止,我发现我需要用
"替换
用于工作,在这个过程中还发现
\
实际上需要
&92\在这里(或者
\\\\
,这使得它在php中成为
“\\\\\”
),转义
{
}
可能是一个好主意,因为它们会让正则表达式解析器产生其他问题。

不要动态构造查询,如果不需要的话,您必须投入大量精力来转义以防止代码注入(并且可能忽略某个参数)。考虑使用外部绑定变量,而可以将其与SQL.

中的准备语句进行比较。 正如您使用BaseX和PHP一样,这是一个:


如果您使用的是BaseX的另一个接口,那么所有外部变量都可以注册。其他XQuery实现也应该提供类似的机制来绑定变量,
external
变量是XQuery的官方标准。

除了特殊字符外,还应该限制可以替换的
占位符
;否则,您将面临注入攻击。谢谢,我不知道这是一个选项。
// create query instance
$input = 'declare variable $name external; for $i in 1 to 10 return element { $name } { $i }';
$query = $session->query($input);
// bind variable
$query->bind("name", "number");
// print results
print $query->execute()."\n";