xss — PHP HP Fortify отправляет непроверенные данные в веб-браузер, что может привести к тому, что браузер выполнит вредоносный код

У меня есть скрипт 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 отправляет непроверенные данные в веб-браузер, что может привести к тому, что браузер выполнит вредоносный код.

Кто-нибудь может помочь в этом?

0

Решение

За несколько других ответов на этом сайте, 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_HEX_QUOT — Все «преобразуются в \ u0022.
  • JSON_HEX_TAG — все < и> преобразуются в \ u003C и \ u003E.
  • JSON_HEX_AMP — все &s конвертируются в \ u0026.
  • JSON_HEX_APOS — Все ‘преобразуются в \ u0027.

Возможно, вы сможете пропустить экранирование одинарных и двойных кавычек, так как я думаю, что самая большая проблема заключается в том, что <> Могут быть напечатаны без побега.

Json: PHP в JavaScript безопасен или нет?
Является ли json_encode достаточной защитой XSS?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]