Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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/1/php/290.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/9/csharp-4.0/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
Javascript 使用htmlspecialchars的pdo fetchAll-保护js注入_Javascript_Php_Jsrender_Htmlspecialchars - Fatal编程技术网

Javascript 使用htmlspecialchars的pdo fetchAll-保护js注入

Javascript 使用htmlspecialchars的pdo fetchAll-保护js注入,javascript,php,jsrender,htmlspecialchars,Javascript,Php,Jsrender,Htmlspecialchars,因此,我的网站将允许用户保存警报(“嘿”)到基本上任何字段,然后当我渲染它时,它将显示警报,而它不应该显示。在阅读相关文章时,听起来您应该在选择和呈现数据时使用htmlspecialchars 我有一个api层,在其中选择数据并返回json,然后使用jsrender呈现json 以下是我的查询和api示例: $return = ["list",[]]; $sql = "SELECT * FROM `News`;" if ($stmt = $GLOBALS['mysqli']->prepar

因此,我的网站将允许用户保存
警报(“嘿”)到基本上任何字段,然后当我渲染它时,它将显示警报,而它不应该显示。在阅读相关文章时,听起来您应该在选择和呈现数据时使用htmlspecialchars

我有一个api层,在其中选择数据并返回json,然后使用jsrender呈现json

以下是我的查询和api示例:

$return = ["list",[]];
$sql = "SELECT * FROM `News`;"
if ($stmt = $GLOBALS['mysqli']->prepare($sql)) {
        if ($stmt->execute($param)) {
            $list = $stmt->fetchAll(PDO::FETCH_ASSOC);
            $return["list"] = $list ;
        }
}

header('Content-Type: application/json');
echo json_encode( $return);
我的模板看起来像:

<div class="card-header  py-1 px-2">
        {{:Comment}}
</div>

{{:注释}

在我的api中,我应该将htmlspecialchars放在哪里?

它应该在呈现为HTML之前立即在该位置进行编码,并且因为您不是用PHP呈现它,而是用JavaScript呈现它,所以您应该在那里(一致地)进行编码

(如果改为在PHP端对其进行编码,则必须记住此文本仅用于显示,否则,一旦将其传递给另一个API方法,就会使用双重编码。)

在JSRender中有
{{>..}}
标记(而不是
{{:…}}
)。有关详细信息,请参阅其


{{>注释}

在将其呈现为HTML之前,应该在该位置对其进行编码,因为您不是用PHP呈现它,而是用JavaScript呈现它,所以您应该(一致地)在该位置进行编码

(如果改为在PHP端对其进行编码,则必须记住此文本仅用于显示,否则,一旦将其传递给另一个API方法,就会使用双重编码。)

在JSRender中有
{{>..}}
标记(而不是
{{:…}}
)。有关详细信息,请参阅其


{{>注释}

您是否允许任何HTML?如果没有,在保存之前将其去掉是有意义的。否则,可能需要对内容进行编码(同样,在保存时)。这两项都可以通过筛选器完成:。如果您想允许有效标记的子集,还可以使用strip_标记:如果使用
strip_标记
,请务必小心。这将破坏科学公式和其他带有有效符号的数据。您允许使用HTML吗?如果没有,在保存之前将其去掉是有意义的。否则,可能需要对内容进行编码(同样,在保存时)。这两项都可以通过筛选器完成:。如果您想允许有效标记的子集,还可以使用strip_标记:如果使用
strip_标记
,请务必小心。这将破坏科学公式和其他带有有效符号的数据。