Intereting Posts
шифровать и расшифровывать md5 PHP method = "post" перестает работать после того, как я добавил этот .htaccess … Почему? Доступ к более чем одной модели глубоких связей в литии Невозможно сохранить данные из одной таблицы в другую таблицу Ограничить время выполнения функции или команды PHP Распознавание / обнаружение лица PHP или программное обеспечение для фото и видео галерей Как сделать ошибки PHP в тексте вместо HTML Типичные ошибки PHP Неустранимая ошибка: класс «PHPMailer» не найден получить уникальное значение из массива и итоговых сумм Создание случайных чисел и букв mysqli fetch_assoc () не возвращается Как правильно деактивировать данные, полученные из текстовой области, при ее возврате в текстовую область? Есть ли какой-либо API, чтобы получить подробную информацию о железнодорожной службе США Использование имени домена вместо localhost внутри с https в xampp

Безопасность PHP preg_replace

Мне нужно предотвратить межсайтовый скриптинг (XSS). Как я могу проверить, что это не межсайтовый скрипт? Проблема связана с моим «url» BBCode.

function bbcode($input) { $search = array('/\[a url="(.+?)"\](.*?)\[\/a\]/is'); $replace = array('<a href="$1" style="color: #337ab7; text-decoration: none" target="_blank">$2 </a>'); return preg_replace($search, $replace, $input); } bbcode([a url="javascript://hello.com/%0Aalert(%27s%27)"]XSS[/url]); 

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

    После общения с OP, похоже, что OP-сайт заражен XSS.

    Обычно XSS поступает от плохих пользователей через форму отправки, ввод комментариев, сообщение, URL и т. Д. Поэтому нам нужно предотвратить XSS, но поскольку вам уже причинили вред, вы можете начать использовать следующую функцию, чтобы остановить выполнение сценариев, а также проанализировать и исправить ваш сайт против будущая атака.

     function filterScript($content) { $default = ''; return preg_replace('/href="javascript:[^"]+"/', $default, $content); } 

    тестирование

    Мы предполагаем, что это наш контент для атаки:

     $content = '<a href="javascript://somedomain.com/%0Aalert(%27s%27)">XSS</a>'; // this link is attacked echo $content . "<br>"; // this link is not attacked echo filterScript($content); 

    EDIT: в дополнение к этому ответу, возможно, стоит также взглянуть на этот ответ .

    Примечание . Вышеупомянутые функции помогут, но не являются полным решением, что вам действительно нужно, чтобы сделать стратегию вашего сайта, чтобы узнать о слабости и узнать, как вы должны ее защищать.

    Предоставленная ссылка содержит некоторые рекомендации о том, как и где смотреть. В OWASP есть список из 10 возможных возможных нападений, которые вы должны прочитать , у них также есть новое руководство по рекомендации.