П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

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

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 178792 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 76507 раз(а).

Учебник HTML.
Просмотров 74580 раз(а).

Руководство по PHP5.
Просмотров 45575 раз(а).

Хостинг через призму DNS.
Просмотров 52581 раз(а).

Подборка текстов стандартных документов.
Просмотров 45613 раз(а).

Учебник PHP - Самоучитель
Просмотров 51816 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 52309 раз(а).

Внешние атаки...
Просмотров 42353 раз(а).

Учебник PHP.
Просмотров 37768 раз(а).

SSI в примерах.
Просмотров 28116 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





ГЛАВА 16. Безопасность.

Проблемы программирования (безопасность данных)

Обработка пользовательского ввода

Хотя обработка данных, введенных пользователем, является важной частью практически любого нормального приложения, необходимо постоянно помнить о возможности передачи неправильных данных (злонамеренной или случайной). В web-приложениях эта опасность выражена еще сильнее, поскольку пользователи могут выполнять системные команды при помощи таких функций, как system() или ехес().

Простейший способ борьбы с потенциально опасным пользовательским вводом — обработка полученных данных стандартной функцией escapeshellcmd().

escapeshellcmd()

Функция escapeshellcmd() экранирует все сомнительные символы в строке, которые могут привести к выполнению потенциально опасной системной команды:

string escapeshellcmd(stringкоманда) 

Чтобы вы лучше представили, к каким последствиям может привести бездумное использование полученных данных, представьте, что вы предоставили пользователям возможность выполнения системных команд — например, `ls -l`. Но если пользователь введет команду `rm -rf *` и вы используете ее для эхо-вывода или вставите в вызов ехес() или system(), это приведет к рекурсивному удалению файлов и каталогов на сервере! Проблемы можно решить предварительной «очисткой» команды при помощи функции escapeshel lcmd(). В примере `rm -rf *` после предварительной обработки функцией escapeshellcmd() строка превращается в \ `rm -rf *\`.

Обратные апострофы (backticks) представляют собой оператор РНР, который пытается выполнить строку, заключенную между апострофами. Результаты выполнения направляются прямо на экран или присваиваются переменной.

При обработке пользовательского ввода возникает и другая проблема — возможное внедрение тегов htmlL. Особенно серьезные проблемы возникают при отображении введенной информации в браузере (как, например, на форуме). Присутствие тегов htmlL в отображаемом сообщении может нарушить структуру страницы, исказить ее внешний вид или вообще помешать загрузке. Проблема решается обработкой пользовательского ввода функцией strip_tags().

strip_tags()

Функция strip_tags() удаляет из строки все теги htmlL. Синтаксис:

string strip_tags (string строка [,string разрешенные_теги])

Первый параметр определяет строку, из которой удаляются теги, а второй необязательный параметр определяет теги, остающиеся в строке. Например, теги курсивного начертания (<1 >...</ 1>) не причинят особого вреда, но лишние табличные теги (например, <td>...</td>) вызовут настоящий хаос. Пример использования функции strip_tags():

$input = "I <i>really</i> love РНР!";
$input = strip_tags($input);

// Результат: 

$input = "I really love PHP!";

На этом завершается краткое знакомство с двумя функциями, часто используемыми при обработке пользовательского ввода. Следующий раздел посвящен шифрованию данных, причем особое внимание, как обычно, уделяется стандартным функциям РНР.

Назад | Содержание раздела | Общее Содержание | Вперед



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru