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