Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


Информационный Канал Subscribe.Ru

RusFAQ.ru: Программирование на PHP

Выпуск № 264
от 23.11.2004, 03:30

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 424
Отправлено ответов: 894
Активность: 210.8 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Licvidator
Статус: Профессиональный
Общий рейтинг: 107.53
URL: PC Info
[Подробней >>]
Vril
Статус: Доверительный
Общий рейтинг: 172.22
[Подробней >>]
D.N.S
Статус: Начальный
Общий рейтинг: 109.09
[Подробней >>]
 
КиберТварь
Статус: Опытный
Общий рейтинг: 190.41
[Подробней >>]
Xak
Статус: Опытный
Общий рейтинг: 176.47
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 420. Добрый день! Нужна Ваша помощь (советы). И есть два вопроса: 1. Есть форма. Хочется так, чтобы при заполнении ее злоумышленникам не удалось напортачить. Т.е. чтобы код (будь это php, либо java) не обрабатывался, а просто выводился. И я даже знаю, что... (ответов: 5)

Вопросов: 1, ответов: 5


 Вопрос № 420

Добрый день!
Нужна Ваша помощь (советы). И есть два вопроса:
1. Есть форма. Хочется так, чтобы при заполнении ее злоумышленникам не удалось напортачить. Т.е. чтобы код (будь это php, либо java) не обрабатывался, а просто выводился. И я даже знаю, что это надо делать с помощью htmlspecialchars. Но проблема в том, что чего-то никак у меня не получается. Допустим с формы переменная идет с именем nik Как использовать правильно ту функцию?
2. Есть массив. В нем много элементов (ники пользователей). При регистрации нового ника идет проверка – а не зарегистрирован ли уже ник (т.е. как раз в массиве и ищу). Проблема в том, что при поиске играет роль регистр. Т.е. если ввести dim (к примеру, он есть в массиве), то ответ будет, что имя занято. А если ввести Dim, то ответ будет, что имя свободно. Хочется сделать, чтобы регистр не учитывался. А как не знаю. Помогите!
И извините, если много написал. Хотелось подробно изложить мои вопросы.С уважением, Сергей.



Вопрос отправлен: 20.11.2004, 03:22
Отправитель: Сергей

[Следующий вопрос >>] [Список вопросов]

Отвечает Licvidator

Здравствуйте, Сергей!
1. $new_nick=htmlspecialchars($nik);
2. $strlow=strtolower($str);

Ответ отправлен: 20.11.2004, 16:42
Отправитель: Licvidator


Отвечает Vril

Приветствую Вас, Сергей!
1. Могу Вас успокоить - злоумышленник не может выполнять серверный код, используя необработанную переменную формы(при условии что не включен register_globals).
Другое дело, если закладывать значение этой переменной в базу данных может произойти SQL иньекция, а вывод необработанного значения этой переменной так же может привести к печальным последствиям(кража сессии,изменение внешнего вида страницы).
При закладке в базу данных используйте подходящую функцию обработки данных( в mysql это функция mysql_real_escape_string). В случае вывода значения переменной достаточно выводить её как показано в приложении.
А вообще-то RTFM - в руководстве по PHP целый раздел посвящён безопасности.
2. Вот Вам функция с примером:



Приложение:

Ответ отправлен: 22.11.2004, 10:34
Отправитель: Vril


Отвечает D.N.S

Приветствую Вас, Сергей!
1.Выдержка из мануала (http://ru.php.net/manual/ru/function.htmlspecialchars.php):
$new = htmlspecialchars("Test", ENT_QUOTES);
echo $new; // <a href='test'>Test</a>
?>
2.
При добавлении нового пользователя используй функцию strtolower($str), она преобразовывает все символы в нижний регистр, потом записывай его в базу.
При регистрации, сначала используй эту же функцию для нового ника, потом проверяй с базой, по необходимости записывай в базу.
http://ru.php.net/manual/ru/function.strtolower.php

Ответ отправлен: 21.11.2004, 01:25
Отправитель: D.N.S


Отвечает КиберТварь

Здравствуйте, Сергей!
Я привел два примера в приложинии.
это не полностью решение ваших проблем.
но в той или иной степени помогут вам.


Приложение:

Ответ отправлен: 21.11.2004, 11:23
Отправитель: КиберТварь


Отвечает Xak

Здравствуйте, Сергей!
1) Если у вас идет переменная с именем ник, то вам просто надо лучше контролировать ее. Повысить средства ее проверки на правильность заполнения.
2) Возможно эту проблему можно решить так: Пускай человек вводит свой ник как хочет, будь то половина заглавных половина нет или еще как не важно. Просто в последствии перед проверкой есть такой ник или нет надо все вводимые ники преобразовывать ну допустим в строчные(т.е. в массиве у вас должны храниться ники в одном регистре). И затем проверять на вхождение в массив.

Ответ отправлен: 20.11.2004, 15:30
Отправитель: Xak



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (20)
C / C++ (17)
Perl (4)
Builder / Delphi (17)
Pascal (19)
Basic / VBA (10)
Java / JavaScript (6)
PHP (17)
Криптография (6)
WinAPI (17)
Радиоэлектроника (11)
Пользователю
Windows 95/98/Me (38)
Windows NT/2000/XP (58)
"Железо" (37)
Поиск информации (20)
Администратору
Windows NT/2000/XP (34)
Linux / Unix (18)
Юристу
Гражданское право (10)
Семейное право (5)
Трудовое право (8)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.





http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.phpplus
Отписаться

В избранное