Воскресенье, 25.08.2019
Меню сайта
Авторизация
Логин:
Пароль:
Поиск
Статистика
Рейтинг@Mail.ru
Rambler's Top100 Яндекс цитирования
Наша кнопка
HTMLPerlPHP
Прочее
Главная » Статьи » WEB Программирование » PHP

Преобразование строк в HTML-код
Существует распространенная Web-атака под названием Cross-Site Scripting (XSS). Например, пользователь специально вводит некоторые данные, например код JavaScript, в Web-форму, а затем Web-страница отображает эту информацию дословно, без надлежащей обработки специальных символов. Стандартные примеры такой ситуации связаны с гостевыми книгами или форумами. Люди вводят текст, чтобы другие его могли увидеть.

Code
<?PHP  
$input = '<script>alert("Сайт взломан");</script>';  
echo htmlspecialchars($input) . '<br>';  
echo htmlentities($input);  
?>

В данном случае нужно было удалить определенную разметку HTML. Не будем долго останавливаться на этой теме, просто скажем: все поппытки внедрения сценариев JavaScript в данные, отловить практически невозможно. Они выполняются не только с помощью тега <script>, но и посредством других элементов HTML, например <img onabort="badcode()">. Следовательно, в большинстве случаев следует удалять весь HTML-код.
Проще всего это сделать, вызвав функцию htmlspecialchars(), которая проверяет строки в HTML-коде и заменяет все символы < и > сочетаниями < и >. Другая возможность - вызвать функцию htmlentities(). В результате для представления символов будут использованы объекты HTML (если это возможно).

Использование функций htmlspecialchars() и htmlentities() просто позволяет вывести на экран то, что пользователь набирает в браузере. Таким образом, если пользователь вводит разметку HTML, эта разметка показывается. Следовательно, функции htmlspecialchars() и htmlentities() удобны для браузера, но могут быть неудобны для пользователя.

Впрочем, существует фунция strip_tags(), которая полностью избавляется от всех элементов HTML. Если вы просто хотите сохранить некоторые элементы (например, какое-то элементарное форматирование, задаваемое посредством тегов <b>, <i> и <br>), во втором параметре функции strip_tags() следует представить список разрешенных значений.

Code
<?PHP  
$input = 'Hello <b><i>world</i></b>' .  
'<script>alert("Сайт взломан");</script>';  
echo strip_tags($input, '<b><br><i>');  
?>

В результате видно, что все нежелательные теги HTML удалены, но содержимое осталось без изменений.
Категория: PHP | Просмотров: 5957 | Добавил: mcreyt | Дата: 04.01.2010
Похожие материалы:
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]