PHP: Как HTML-кодировать HTML-кодированные данные? - PullRequest
0 голосов
/ 20 мая 2018

Я бы хотел проанализировать RSS-канал и отобразить содержимое на моем веб-сайте (php, html).

Но я бы хотел html-кодировать канал, чтобы предотвратить атаки xss.Но как мне сделать это правильно?

1.) Как я могу html-кодировать URL, чтобы он потом работал?Если я использую htmlspecialchars для любого URL, то URL больше не будет работать.

2.) Титул RSS-канала уже закодирован в формате html.Но я бы хотел сделать это снова самостоятельно, чтобы быть уверенным, что в нем не может быть содержимого xss.Но как я могу html-кодировать уже закодированный html?Если я дважды использую htmlspecialchars, вывод html покажет правильные команды вместо правильного символа.

1 Ответ

0 голосов
/ 20 мая 2018

Просто дайте вам функцию, которая может удалить xss.(не работает в любых ситуациях)

function RemoveXSS(&$string, $low = false)
{
    if (!is_array($string)) {
        $string = trim($string);
        $string = strip_tags($string);
        $string = htmlspecialchars($string);
        if ($low) {
            return true;
        }
        $string = str_replace(['"', "\\", "'", "/", "..", "../", "./", "//"], '', $string);
        $no = '/%0[0-8bcef]/';
        $string = preg_replace($no, '', $string);
        $no = '/%1[0-9a-f]/';
        $string = preg_replace($no, '', $string);
        $no = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S';
        $string = preg_replace($no, '', $string);
        return true;
    }
    $keys = array_keys($string);
    foreach ($keys as $key) {
        RemoveXSS($string [$key]);
    }
}
...