входом является URL, как защитить его от xss

Выезд DateTime. Сравните метод

5
задан drummer 9 November 2009 в 05:43
поделиться

3 ответа

Вам следует проверить Pligg ( pligg.com ). В нем говорится, что это система «Управление контентом с открытым исходным кодом», но на самом деле это версия Digg с открытым исходным кодом. Они скопировали дизайн digg и сделали версию с открытым исходным кодом, чтобы другие люди (например, вы) могли создавать свои собственные сайты Digg. Его PHP и Mysql, и его простой в использовании и администрировании. Лицензия является GPLish (Affero), и если вы хотите, вы можете узнать больше о лицензии Affero здесь . Надеюсь, это поможет.

function makeHTMLAttributeSafe($string) {
    $scaryCharacters = array(32, 37, 42, 43, 44, 45, 47, 59, 60, 61, 62, 94, 124);
    $translationTable = array();
    foreach ($scaryCharacters as $num) {
        $hex = str_pad(dechex($num), 2, '0', STR_PAD_LEFT);
        $translationTable[chr($num)] = '&#x' . $hex . ';';
    }

    $string = strtr($string, $translationTable);
    return $string;
}

Последняя проблема - недопустимые символы UTF-8 - при доставке в некоторые браузеры неправильно сформированная последовательность байтов UTF-8 может вырываться из объекта HTML. Чтобы защититься от этого, просто убедитесь, что все полученные символы UTF-8 действительны:

function assertValidUTF8($string) {
    if (strlen($string) AND !preg_match('/^.{1}/us', $string)) {
        die;
    }

    return $string;
}

Модификатор u в этом регулярном выражении делает его регулярным выражением соответствия Unicode. Сопоставляя один символ, . , мы уверены, что вся строка является допустимой Unicode.

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

OWASP предоставляет большой объем информации в их шпаргалке по предотвращению XSS .

неправильно сформированная последовательность байтов UTF-8 может вырваться из объекта HTML. Чтобы защититься от этого, просто убедитесь, что все полученные символы UTF-8 действительны:

function assertValidUTF8($string) {
    if (strlen($string) AND !preg_match('/^.{1}/us', $string)) {
        die;
    }

    return $string;
}

Модификатор u в этом регулярном выражении делает его регулярным выражением соответствия Unicode. Сопоставляя один символ, . , мы уверены, что вся строка является допустимой Unicode.

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

OWASP предоставляет большой объем информации в их шпаргалке по предотвращению XSS .

неправильно сформированная последовательность байтов UTF-8 может вырваться из объекта HTML. Чтобы защититься от этого, просто убедитесь, что все полученные символы UTF-8 действительны:

function assertValidUTF8($string) {
    if (strlen($string) AND !preg_match('/^.{1}/us', $string)) {
        die;
    }

    return $string;
}

Модификатор u в этом регулярном выражении делает его регулярным выражением соответствия Unicode. Сопоставляя один символ, . , мы уверены, что вся строка является допустимой Unicode.

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

OWASP предоставляет большой объем информации в их шпаргалке по предотвращению XSS .

function assertValidUTF8($string) {
    if (strlen($string) AND !preg_match('/^.{1}/us', $string)) {
        die;
    }

    return $string;
}

Модификатор u в этом регулярном выражении делает его регулярным выражением соответствия Unicode. Сопоставляя один символ, . , мы уверены, что вся строка является допустимой Unicode.

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

OWASP предоставляет большой объем информации в их шпаргалке по предотвращению XSS .

function assertValidUTF8($string) {
    if (strlen($string) AND !preg_match('/^.{1}/us', $string)) {
        die;
    }

    return $string;
}

Модификатор u в этом регулярном выражении делает его регулярным выражением соответствия Unicode. Сопоставляя один символ, . , мы уверены, что вся строка является допустимой Unicode.

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

OWASP предоставляет большой объем информации в их шпаргалке по предотвращению XSS .

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

OWASP предоставляет большой объем информации в их шпаргалке по предотвращению XSS .

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

OWASP предоставляет большой объем информации в их шпаргалке по предотвращению XSS .

9
ответ дан 13 December 2019 в 19:29
поделиться

Перед отображением пользователю необходимо закодировать его с помощью htmlspecialchars . Обычно этого достаточно при работе с данными за пределами тега