У меня есть скрипт PHP, как показано ниже:
10. $json_sanitized = ds($json);
11. echo json_encode ( $json_sanitized );
ds()
Функция имеет несколько правил для дезинфекции $json
данные.
function ds($text, $double = true, $charset = null) {
if (is_array($text)) {
// Some code
} elseif (is_object($text)) {
// Some code
} elseif (is_bool($text)) {
// Some code
}
$defaultCharset = 'UTF-8';
if (is_string($double)) {
$charset = $double;
}
return htmlspecialchars($text, ENT_QUOTES, ($charset) ? $charset : $defaultCharset, $double);
}
Но сканер HP Fortify все еще говорит: строка № 11 отправляет непроверенные данные в веб-браузер, что может привести к тому, что браузер выполнит вредоносный код.
Кто-нибудь может помочь в этом?
За несколько других ответов на этом сайте, json_encode
Функция в PHP, как правило, безопасна, и есть несколько опций, которые могут сделать ее более безопасной, за исключением дополнительного экранирования.
Использование следующего помогает избежать появления потенциально небезопасных символов, которые подхватывает Fortify:
echo json_encode($json_sanitized,JSON_HEX_QUOT|JSON_HEX_TAG|JSON_HEX_AMP|JSON_HEX_APOS);
В соответствии с json_encode
документы и константы JSON документы, эти константы обеспечивают следующие (необязательные) преобразования:
Возможно, вы сможете пропустить экранирование одинарных и двойных кавычек, так как я думаю, что самая большая проблема заключается в том, что <> Могут быть напечатаны без побега.
Json: PHP в JavaScript безопасен или нет?
Является ли json_encode достаточной защитой XSS?
Других решений пока нет …