Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Защита от взлома
 
 автор: Sanych   (28.07.2004 в 14:16)   письмо автору
 
 

Как-то давненько читал статью, где описывалось применение функции, которая меняет так называемые "опасные" символы (%,$,@,&, и т.д.), введеные пользователем в форме на странице, - на спецсимволы (те же символы, но под специальным кодом). Вопросы:
1. В каких случаях целесообразно применять подобную функцию?
2. Нужно ли применять эту функцию для строк-аргументов функции "mail"?
3. Какой синтаксис этой функции?

   
 
 автор: glsv (Дизайнер)   (28.07.2004 в 14:41)   письмо автору
 
   для: Sanych   (28.07.2004 в 14:16)
 

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


Htmlspecialchars() - преобразует спецсимолы в HTML сущности



http://www.softtime.ru/dic/id_dic=28&id_group=11

   
 
 автор: Кузнецов М.В.   (28.07.2004 в 23:13)   письмо автору
 
   для: glsv (Дизайнер)   (28.07.2004 в 14:41)
 

Ну и еще немного по поводу удаления тегов и обратных слешей и по синтаксису функций, с помощью которых это делается.
К примеру, если переменная $name содержит текст с именем пользователя, то обработка этого текста может выглядеть следующим образом:
<?php
$name 
htmlspecialchars(stripslashes($_POST['name']));
?>

Применение функции htmlspecialchars гарантирует, что любой введенный пользователем код (php, javascript и т.д.) будет отображен, но выполняться не будет. Функция имеет следующий синтаксис:

string htmlspecialchars (string str [, int quote_style [, string
charset]])

Через первый обязательный параметр str, функции передается обрабатываемый текст, который возвращается после преобразования как результат работы.
Второй необязательный параметр quote_style задаёт режим обработки одинарных и двойных кавычек. По умолчанию, данный параметр соответствует константе ENT_COMPAT, в данном режиме двойные кавычки заменяются символом "&quot;", при этом одиночные остаются без изменений. Кроме этого параметр может принимать два других значения: ENT_QUOTES и ENT_NOQUOTES. В первом случае, помимо двойных, кавычек преобразованию подвергаются так же одинарные кавычки, которые заменяются символом "&#039;". Значение параметра ENT_NOQUOTES задаёт режим, в котором не один из видов кавычек не подвергается преобразованию.
Последний параметр charset определяет кодировку, например "cp1251" или "KOI8-R".
Функция stripslashes предназначена для удаления обратных слешей и имеет следующий синтаксис:

string stripslashes (string str)

Функция принимает единственный параметр str, с обрабатываемой строкой. Результатом работы функции является строка str в которой удаляются экранирующие бэкслэши (\' преобразуется в ', двойные бэкслэши (\\) преобразуется в одиночные(\) и т.д.).

   
 
 автор: Кузнецов М.В.   (28.07.2004 в 23:07)   письмо автору
 
   для: Sanych   (28.07.2004 в 14:16)
 

Я еще немного добавлю.

Действительно, проверке корректности данных, вводимых посетителем, необходимо уделять большое внимание, поскольку необработанные ошибки, возникающие при неправильном вводе данных, приводят к серьёзным ошибкам в работе скрипта. Допустим, в HTML-форме для отправки пользователем письма, посетителю необходимо ввести адрес электронной почты. В этом случае, для корректной работы Web-приложения нужно удостоверится в следующем:
- Проверить, тот факт что поле, в которое заносится электронный адрес непустое;
- Проверить соответствие введенного адреса с помощью регулярного выражения.
Кроме случайных ошибок посетителя (которые мы рассмотрели выше), необходимо также исключить ситуации, в которых возможно злонамеренное введение некорректных данных, к примеру, различных скриптов. Для этого вводимый текст необходимо обработать функциями удаления HTML-тегов (для исключения возможности написания скриптов на JavaScript и Visual Basic) и обратных слешей (для исключения возможности написания скриптов на Perl). Т. о. минимальный набор действий, необходимый для проверки корректности данных, вводимых пользователем, включает следующие этапы:
- проверка заполнения посетителем обязательных для ввода полей;
- проверка допустимости вводимых данных (как правило, осуществляется при помощи регулярных выражений);
- обработка введенного текста функцией htmlspecialchars для удаления HTML-тегов;
- обработка введенного текста функцией stripslashes для удаления обратных слешей.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования